2017-06-22 10 views
0

Ich habe einen Ajax-Aufruf, der HTML-Code zurückgibt, der in einen Container eingefügt wird.Warte auf AJAX-Antwort vollständig bereit sein/gerendert

Jetzt muss ich eine jQuery-Funktion aufrufen, um die Galerie zu formatieren, aber ich kann keine Möglichkeit finden, sicherzustellen, dass die jQuery-Funktion darauf wartet, dass returnedData vollständig geladen/gerendert wird.

Wie Sie sehen können habe ich .ready() versucht, aber es funktioniert nicht. Ich habe auch versucht, SetTimeout, die tatsächlich funktioniert, aber da die returnedData viele Bilder enthalten kann, kann ich es nicht verwenden, da ich nicht weiß, wie lange es dauern würde, um alle Bilder zu laden.

Irgendwelche Ideen?

$(document).ready(function() { 
    $.ajax(url, {type: 'POST', dataType: 'json', data: data, success: success_handler}); 
}); 

function success_handler(returnedData) { 
    $('.category-images-js').html(returnedData); 
    $('.category-images-js').ready(function() { 
     // Code to run after all data inside returnedData is fully ready/rendered 
    ); 
} 

LÖSUNG: Dieser Thread: How to know if all elements in a DIV have been fully loaded? für mich gearbeitet, aber ich hatte eine Behelfslösung als Code machen ich laufen, wenn Daten innerhalb returnedData vollständig fertig/gerendert ist, die auf Last Trigger macht 3-mal pro Bild.

+0

versuchen ** ajaxComplete() ** Handler . http://api.jquery.com/ajaxcomplete/ –

+1

Mögliches Duplikat von [Wie kann man wissen, ob alle Elemente in einem DIV vollständig geladen wurden?] (https://stackoverflow.com/questions/26480844/how-to-know -if-all-Elemente-in-einem-Div-wurden-voll-geladen worden sein) – Yannici

+0

_Code, um nach dem ganzen html innerhalb des returnedData zu laufen, ist völlig bereit/gerendert. _ Es ist unklar, was Sie damit meinen. 'returnedData' ist JSON und enthält kein HTML. – hindmost

Antwort

0

ich meine eigene Ajax-Funktion gemacht habe, so hoffe ich es Ihnen passt:

function xhr(u, c) { 
    var x = new XMLHttpRequest(); 
    x.onreadystatechange = function(){ 
     if (x.readyState == 4 && x.status == 200){ 
      c(x.responseText) 
     } 
    }; 
    x.open("GET", u, true); 
    x.send() 
} 

u = URL

c = Callback-Funktion