Syncronous JQuery.post ()

8

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.

    
Trevor Arjeski 05.06.2011, 17:24
quelle

4 Antworten

4

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

    
Trevor Arjeski 05.06.2011, 17:47
quelle
5

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.

    
Jakub 05.06.2011 17:29
quelle
0

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:

%Vor%     
sadmicrowave 05.06.2011 18:06
quelle
0
%Vor%     
for 13.12.2014 06:26
quelle