Mit dem Deferred-Muster von jQuery http://api.jquery.com/jQuery.when/, versuche ich mehrere Jsonp Ajax-Aufrufe und warten auf die Ergebnisse vor dem nächsten Schritt. Ich kann dies mit einer festgelegten Anzahl von Aufrufen erreichen, weil ich die Anzahl der aufgelösten Argumentparameter im verzögerten Objekt ".done()" festlegen kann. Aber in meiner Anwendung funktioniert es nicht, weil die Anzahl der Anrufe dynamisch und immer unbekannt ist.Dynamische mehrere verzögerte jQuery Ajax Anrufe
Dieses erste vereinfachte Beispiel funktioniert, weil ich die Anzahl der Argumente in der .done() aufgelöste Funktion festlegen kann. Ich weiß, dass ich zwei brauchen, weil es zwei Anrufe in der .when ist():
$.when($.ajax(url1), $.ajax(url2)).done(function(a1, a2) {
var data = a1[ 0 ] + a2[ 0 ];
});
Das ist, was ich brauche, aber es kann nicht zur Arbeit kommen: auf
var urls = GetUrlList(); // returns array of urls to json service
var requests = []; // hold ajax request
for (i = 0; i < urls.length; i++) {
requests.push($.ajax(url[i]));
}
$.when.apply($, requests).done(function ("what goes here?") {
// Need to get the data returned from all ajax calls here
});
Vielen Dank für jede Hilfe Dies!
Dank alle Argumente hält, das funktioniert! –
Das funktioniert gut, wenn Sie mindestens zwei Anforderungen senden müssen. Andernfalls erhalten Sie ein inkonsistentes Verhalten, wenn es eine oder mehrere Abfragen gibt :( – Happynoff
Die Verknüpfung zu Argumenten ist veraltet und verweist auf eine veraltete Funktion. Der [aktualisierte Link ist dies] (https://developer.mozilla.org/en- US/docs/Web/JavaScript/Referenz/Funktionen/Argumente) – Liam