Ich schreibe ein kleines Skript, das einzelne AJAX-Aufrufe durch eine Schleife führt, und ich stieß auf ein höchstwahrscheinlich offensichtliches Problem. Es scheint, dass die Schleife schnell wird, um die Daten zu verarbeiten, die mit Ajax empfangen werden, was bewirkt, dass sie nur das letzte Stück Daten in der Schleife lädt. Ich habe eine Warnmeldung hinzugefügt, die die Iterationen durchläuft und die Daten in Ordnung bringt, aber in einer Benutzerumgebung wäre dies nicht praktikabel. Der Code ist einfach eine jquery .post () mit einem Callback innerhalb einer for-Schleife. Ich kann auf Anfrage Code schreiben, aber ich glaube, das kann man mündlich klären. Kennt jemand eine Problemumgehung oder einen besseren Ansatz zum sequentiellen Laden von Daten? Danke.
BEARBEITEN
Ändert .ajaxSetup()
.post()
? Vielleicht kann ich das verwenden, um den Async-Wert für .post () zu ändern.
Ich fand tatsächlich, dass das Hinzufügen dieses Snippets funktionierte, so dass ich meine .post () nicht zu .ajax ()
ändern musste $.ajaxSetup({
async: false
});
Ich bin mir nicht sicher, ob es auch die Einstellungen meiner anderen Ajax-Anrufe ändern wird, obwohl
Du musst deinen Ajax-Anruf zwingen, synchron zu sein, mein Freund;)
ex:
asyncBoolean Standard: true
Standardmäßig werden alle Anforderungen asynchron gesendet (d. h. standardmäßig ist dies auf true gesetzt) . Wenn Sie synchrone Anforderungen benötigen, setzen Sie diese Option auf false . Domänenübergreifende Anfragen und dataType: "jsonp" -Anfragen unterstützen keinen synchronen Vorgang. Beachten Sie, dass synchrone Anfragen den Browser vorübergehend sperren können, indem Sie alle Aktionen deaktivieren, während die Anfrage aktiv ist.
Wenn Sie async: false
verwenden, sollten Sie in der Lage sein, jeden Ihrer Ajax-Aufrufe in eine Warteschlange zu stellen, bis sie in einer synchronen Methode ausgeführt werden können. Wie so:
Tags und Links javascript jquery ajax synchronization