jQuery.ajax () innerhalb einer Schleife [duplizieren]

7

Wenn ich jQuery.ajax() innerhalb einer Schleife anrufe, würde es bewirken, dass der Aufruf in der aktuellen Iteration den letzten Aufruf überschreibt oder ein neues XHR-Objekt für die neue Anforderung zugewiesen wird?

Ich habe eine Schleife, die das macht, während ich aus dem Konsolenprotokoll die Anfragen erledigt 200 ok sehe, aber nur die Ergebnisdaten der letzten Anfrage in der Schleife werden von der Anfrage success callback als angenommen gespeichert.

der Code:

%Vor%     
MTVS 31.07.2013, 21:52
quelle

5 Antworten

24

Sie benötigen eine Schließung für key :

%Vor%

Auf diese Weise stellen Sie sicher, dass der Schlüssel in jedem Ajax-Erfolgsrückruf immer korrekt ist. aber ansonsten sollte es funktionieren

Ich habe eine kleine Abschlussdemonstration mit Timeout anstelle von Ajax gemacht, aber das Prinzip ist dasselbe:

Ссылка

    
Andy 31.07.2013 22:14
quelle
7

Sie müssen async: false in Ihrer Ajax-Anfrage verwenden. Es sendet die Ajax-Anfrage synchron und wartet darauf, dass die vorherige Anfrage beendet und die nächste Anfrage gesendet wird.

%Vor%     
Yura Zabolotny 26.11.2014 11:03
quelle
6

Ich glaube, was hier passiert, hat mit der Schließung zu tun. In dieser Schleife:

%Vor%

Die Variable key wird außerhalb der for-Schleife definiert. Wenn Sie also zu den Callbacks kommen, hat sich der Wert wahrscheinlich geändert. Versuchen Sie stattdessen Folgendes:

Ссылка

%Vor%     
Jason P 31.07.2013 22:00
quelle
3

Ich war mit der gleichen Situation konfrontiert, löste den Ajax-Aufruf in einer neuen Funktion und rief die Funktion in die Schleife auf.

Es sieht so aus:

%Vor%     
JPRLCol 07.04.2014 14:02
quelle
2

So mache ich immer eine Ajax-Schleife ..

Ich verwende eine rekursive Funktion, die nach dem xhr.readyState == 4

aufgerufen wird %Vor%     
gezzuzz 31.07.2013 21:57
quelle

Tags und Links