Ich möchte X Anzahl der AJAX-Anfragen in jQuery machen und die JSON-Antwort zu einem Array hinzufügen. Wenn alle Ajax-Anfragen erledigt sind, möchte ich etwas Code ausführen. Gibt es einen guten Weg, dies zu lösen?Ein Rückruf für mehrere JSON-Anfragen
Antwort
Dieser Code sollte tun, was Sie wollen, alle jQuery Stil. Im Grunde verwendet es ein bisschen Rekursion, um es zu erledigen. Übergeben Sie Optionen an die Funktion loadmultiples, um die gewünschten Einstellungen vorzunehmen, und JSON-Antworten werden auf ein Array übertragen. Sie könnten es einfach ändern, wenn Sie stattdessen die JSON-Antworten in eine einzelne Struktur zusammenführen wollten, aber ich war mir nicht sicher, ob das das war, was Sie wollten.
var loadmultiples = function(options) {
var settings = $.extend({
//set the url to get
url : '/response.json',
//this function is called when everything is done
callback : function() {},
//set this option to define how many loads to do
numbertodo : 10,
//these two are just used for
//storing data while we recurse,
//and keeping track of the current position
//however you can change them if you want to start
//from a different point, or have existing data
numberdone : 0,
data : []
}, options || {});
//load the json, passing up the current 'number'
//of the content to load
$.ajax({
url : settings.url,
data : { 'number' : settings.numberdone },
dataType: 'json',
success: function(result) {
//add the response to the data
settings.data.push(result);
//increment the counter of how many files have been done
settings.numberdone++;
//
if(settings.numberdone < settings.numbertoexecute) {
loadmultiples(settings);
} else {
settings.callback(settings.data);
}
}
});
}
//so now we can call it...
loadmultiples({
callback: function(data) {
//this function will get called when all the data calls have been
//completed, and the resulting data is in the data parameter
}
});
Ich weiß nichts anderes, als die Anforderungen zu zählen und sie manuell in Ihrem Code zu zählen. Sobald sie alle zurück sind und berücksichtigt sind, führen Sie Ihren Master-Callback aus.
Für jede Ajax-Antwort würde ich tun:
for(var k in json) someArray[k]=json[k];
Aber ich bin mir nicht sicher, wie Sie Ihre Daten json aussieht.
tat ich das vor kurzem durch eine Reihe von AJAX-Anfragen abzufeuern, dann Dekrementieren einen Zähler, wie sie in kommen.
Es funktionierte gut, aber ich beenden meinen Code aus einer Reihe von kleinen Ajax-Wechsel nach oben Anfragen, nur den Server für alles auf einmal zu fragen. Viel weniger Anfragen und weniger Overhead und viel robuster.
Es sei denn, Sie haben einen guten Grund, individuelle Anfragen zu stellen (einige Anfragen sind wahrscheinlich schnell, einige langsam, und Sie können eine aussagekräftige Anzeige von Informationen anbieten, wenn die Teile eintreffen). vorausgesetzt, Sie können den Servercode ändern oder neuen Servercode hinzufügen).
- 1. Ein Rückruf für ActiveRecord-Datenbankverbindungen?
- 2. mehrere Parameter Rückruf in Moq
- 3. Rückruf-URL für Affiliate
- 4. Codeigniter Form Validation Rückruf Überprüfung mehrere Felder
- 5. Rückruf für Sellerie apply_async
- 6. Rückruf für innerhalb eines Moduls definierte Klassen
- 7. Rückruf für geänderte ActiveRecord Attribute?
- 8. für Rückruf warten in Javascript
- 9. NSURLConnection Rückruf Rückruf
- 10. Rückruf für wenn ein UIWebView in iOS SDK geschlossen wird
- 11. Ein Konto für mehrere Apps
- 12. Ein Suchformular für mehrere Datenbankfelder
- 13. Ein Skript für mehrere Tasten
- 14. Wie mehrere Asynchron-Funktionen dann ausführen Rückruf Code
- 15. Jeditable CANCEL-Rückruf vom AJAX-Rückruf?
- 16. Mehrere Routen mit demselben anonymen Rückruf mit Slim Framework
- 17. Parallel Python: Was ist ein Rückruf?
- 18. Wie "erwarten" Sie, dass ein Rückruf zurückkommt?
- 19. Rails Rückruf für das Äquivalent von „after_new“
- 20. Three.js JSONLoader Rückruf
- 21. Observable für einen Rückruf in Rx
- 22. Rückruf/Versprechen für $ cordovaDialogs in Funktion
- 23. Nachrüstung, Rückruf für 204 Nein Inhaltsreaktion?
- 24. Globaler Rückruf für Ajax-Anrufe in JQuery
- 25. Rückruf/Promises Implementierung für eine boolean Check
- 26. NodeJS Röntgen-Web-Scraper: mehrere URLs in einer Schleife Rückruf
- 27. Aufruf mehrere Methoden für ein Objekt mehrere Werte
- 28. Fehler: Rückruf für Aufgabenabschluss zu oft aufgerufen
- 29. Rückruf für Puts und warnen Ruby
- 30. Matlab: Taste Rückruf für „Halten Sie“ Ereignis
Danke! Ich möchte den JSON von verschiedenen URLs laden, aber Ihr Code könnte leicht geändert werden, um das zu tun. – gustavlarson