Antworten auf deine Fragen:
Neues Thema erstellen

jQuery funktioniert nach Ajax Anfrage nicht mehr

Robbyn-

PHP / Flex Programmierer

Hy zusammen,
folgendes Thema.
Ich habe eine Webanwendung die sich Ihre Daten dynamisch, he nachdem wann Sie gebraucht werden, holt.
Dazu nutze ich jQuery da dieses Framework doch sehr viel vereinfacht.

Folgendes Szenario. Ich habe ein Bild und wenn ich auf dieses Bild drauf klicke soll mittles der jquery ajax Anfrage neuer Content von PHP geholt werden.
Dies sieht in etwa so aus:

Code:
$.ajax({
        url: HTTP+'ajax/getDownloadData.html',
        data: {id_media_object: id_media_objects},
        type: 'post',
        dataType: 'json',
        success: function(data){
            //console.log('Valide: '+data);
            console.log('Back');
            try{
            $('#download_'+id_media_objects).html(data.field);
            }catch(eerr){
                console.log('Error: '+eerr.message);
            }
            console.log('Back 2');
        }
    });

Dies funktioniert auch alles soweit.
Nun stellen wir uns vor ich habe nicht nur 1 Bild dort sondern 100 Bilder.
Wenn ich nun dort auf einige der Bilder klicken, lädt er mir den Content den mir PHP zurück liefert, aber jQuery reagiert auf keiner meiner Anfragen mehr. Egal welchen Befehl ich mit jQuery ausführen möchte er geht nicht.
Wenn ich versuche ohne jQuery auf Javascript ebene etwas auszuführen geht dies jedoch.

Naja dies ist immer ein hin und her, manchmal gehen diese Bilder und der Content kann geladen werden und manchmal nicht.

Der Content der von PHP zurück kommt ist HTML und auch valide. Dies habe ich vorab alles bereits getestet.

Hat jemand von euch bereits ähnliche Fälle gehabt und könnte mir dabei helfen?

Danke vorab für die Hilfe von euch :)
 

Robbyn-

PHP / Flex Programmierer

Ich habe noch was entdeckt.

Je nachdem wie der Benutzer nach unten scrollt, zu den Bilder, destso mehr lade ich ja per ajax nach.

Also ist der Benutzer mit seiner Browser Scrollleiste nach unten angekommen, lade 20 weitere Bilder nach.

Und hier denke ich ist mein Knachpunkt.
Ich habe nehmlich feststellen müssen das jquery nicht mehr geht wenn neue Bilder nachgeladen werden. Warte ich aber dann so 2-3 Minuten gehen alle Bilder wieder.

Ist das vielleicht ein Problem von jQuery das der einfach zu lange braucht zum initialisieren des Contents?
 

JPS

Nicht mehr ganz neu hier

Meinst Du JQuery Sachen, die im neuen Content durch das AJAX zurückkommen oder JQuery Code der bereits da war?
 

Robbyn-

PHP / Flex Programmierer

jQuery Content der durch Ajax geladen wurde.
Dieser braucht eine halbe Ewigkeit bis er wohl anerkannt wird.

Ich musste auch gerade feststellen das wenn ich versuche mittels normalen javascript, also ohne jQuery, diesen Ajax Content hinzuzufügen, geht dies auch nicht.

Ist also nicht nur ein reines jQuery Problem.
Hmmm, das Javascript reagiert an sich gar nicht mehr auf den neuen Content, erst nach ein paar Minuten. Die Seite ist aber an sich weiter benutzbar. Also Browser friert nicht ein oder sowas.
 

JPS

Nicht mehr ganz neu hier

Manche Dinge, die JQuery kann und insbesondere die UI Features muss Du bei dem DOM "anmelden", da sie nachträglich eingefügt nicht arbeiten. z.B.
$('ul[data-role=listview]').listview({
refresh: true
});
Durch das refresh werden die Sachen dann erneut "geparst" und funktionieren dann.
 

Robbyn-

PHP / Flex Programmierer

Hmmm, der Ajax Content wird in ein div geladen das von jquery.dialog aufgerufen wird.

Kann es sein das ich den jquery.dialog refreshen muss? Was aber auch irgendwie quatsch ist, da dieser DIalog erst aufgerufen wird nachdem ich auf das Bild klicke.

Also ich klicke auf das Bild, dann rufe ich das unsichtbare div mittels jquery.dialog auf, und nach dem open event schicken ich die ajax anfrage los, die mir den ajax content besorgt. Und dieser Ajax Content ersetzt den Inhalt im div das jquery.dialog aufgerufen hat.
 

JPS

Nicht mehr ganz neu hier

Baust Du das gesamte DIV mit dem AJAX Request? Vielleicht solltest Du am Ende des Success das einfach mal refreshen. Tut ja nicht weh
Ausserdem würde ich erst den Content holen und dann das Ding anzeigen, wenn mal was schief geht, hast kein leeres Dialog Feld dort.
 

Robbyn-

PHP / Flex Programmierer

Nein nicht ganz. Das Div ist ja schon da, es enthält zum Anfang ein kleines Bild das eine loader gif Grafik zeigt, die die Wartezeit überbrückt :)

Diese wird, nachdem der Ajax den Content hat, durch diesen besagten Content komplett ersetzt.
Nur scheint er dies nicht zu machen oder die Dialog Box cacht den Inhalt, was aber nicht erklärt wieso dies bei einigen passiert und bei anderen nicht.
Sind meistens die gleichen Bilder bei den dieses Problem auftaucht.

Wie meinst du mit nach success refreshen?
Wie refreshe ich den denn Content ohne Ihn zu ersetzen oder verstehe ich das gerade falsch?!
 

Robbyn-

PHP / Flex Programmierer

Ok, es lag offenbar am jquery.dialog

Wenn der Content einmal geladen ist lässt er sich offenbar nicht zu 100% wieder austauschen.
Ich habe es nun so gemacht wie du mir empfohlen hast, die Dialog Box wird erst geladen wenn der Ajax Content da ist.

Ich danke dir für deine Hilfe :)
 

JPS

Nicht mehr ganz neu hier

Was ich meinte mit dem refresh in der Success. Wenn Du vom AJAX Request den Content zurück bekommst, arbeitest Du denn ja in einer function (Success Methode) ein.
Du baust den Inhalt in das DIV und dann solltest Du
$('#id_vom_DIV').dialog({refresh: true}); machen um das Dialog Feld neu zu initialisieren.
Aber who cares. Es hat ja geklappt. :D
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben