2010-11-25 6 views
1

Ich habe Ajax Anfragen (mehrere) zu meinem Servlet. Jede Anfrage wird auf der onBlur des Textfelds erstellt. Ich habe insgesamt 3 solche Textfelder. Ich habe eine Anforderung, dass wenn die Antwort des ersten Ergebnisses kommt, dann nur die nächste Anfrage ausgelöst werden soll. Bitte lassen Sie mich wissen, wenn jemand an so etwas gearbeitet hat. Ich verwende Dojo/Digit auf der Client-Seite und einfaches Java-Servlet auf der Serverseite. Danke.Synchronize Ajax Requests

Antwort

4

Sie können dies mit einer einfachen Codierung tun. Wenn Sie die zweite Anfrage erst nach der Antwort der ersten Anfrage senden müssen, müssen Sie für die zweite Anfrage in der Erfolgsbedingung Ihrer ersten Anfrage codieren. Werfen Sie einen Blick auf den Code unten:

dojo.xhrPost({ 
form:"someForm", 
load: function(data, args){ 
    // Success 
// call the second request 
}, 
error: function(err, args){ 
    // Error 
} 
}); 

Ich hoffe, das

+0

Alternativ können Sie "then" beim Rückgabewert von xhrPost aufrufen, was eine verzögerte Rückfrage ist. Siehe http://dojotoolkit.org/reference-guide/dojo/Deferred.html – peller

0

hilft Sie ein Attribut auf einem Knoten vor dem Senden der Ajax-Anforderung stellen können. In der Rückruffunktion können Sie das Attribut auf dem Knoten ändern. Bevor Sie irgendwelche Ajax-Anfragen senden, können Sie dieses Attribut überprüfen und wenn Sie bereits eine Ajax-Anfrage bearbeitet haben, können Sie vermeiden, eine neue Anfrage zu senden.

Es ist besser, dem Benutzer einen Hinweis zu geben, dass bereits eine Anfrage bearbeitet wird.

Es gibt auch ein Attribut namens 'sync'. Aber das zu wahren ist nicht ratsam.