J'ai un appel .ajax jQuery:Comment lancer un autre appel jQuery .ajax basé sur le résultat d'un appel initial .ajax?
$j.ajax({
type: "POST",
url: "/Services/Cart.asmx/UpdateQuantity",
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
var d = msg.d;
// etc.
},
error: function(xhr, msg) {
var response = JSON.parse(xhr.responseText);
var cart = $j('#cart');
if (response.Message) {
cart.before(' <div class="error">' + response.Message + '</div> ');
}
else {
cart.before(' <div class="error">An unexpected error occurred.</div> ');
}
},
complete: function(request, settings) {
// Some other stuff.
}
}); // end ajax
alert('Initially thought this would be called after above .ajax call complete. But it is not. Rather, it is called before success etc.')
Cependant, sur la base des données renvoyées par ce premier appel ajax, je veux lancer un second appel .ajax. Il semble cependant que, en raison de la configuration des callbacks pour le premier, il ne se produit pas séquentiellement (c'est-à-dire dans la dernière ligne d'alerte ci-dessus ('Initialally ...'), donc je ne peux pas utiliser le dernières données DOM côté client mises à jour.
Comment est-il préférable d'envoyer un autre appel .ajax? J'ai rapidement fait quelques tests au sein de l'événement complet, mais cela ne semblait pas aller. J'ai "jQuery in Action" assis ici, attendant que je trouve le temps de creuser pour comprendre ce qui se passe sous le capot, mais pas encore!
MISE À JOUR: Erk. Lorsque l'évidence ne fonctionne pas comme prévu, le problème se situe généralement entre la chaise et le moniteur; Je vais mettre celui-ci à un pet de cerveau toute la nuit. Il s'est avéré très correct que je l'avais initialement configuré (appeler le deuxième appel .ajax dans le rappel de succès), mais mon deuxième appel .ajax avait une petite erreur de syntaxe (et donc a échoué et m'a envoyé dans le mauvais sens). Et @kgiannakakis est noté comme la réponse parce qu'il était a) premier et b) fourni le hilarement sous-estimé "Vous pouvez configurer l'appel pour être synchrone, mais ce n'est pas une technique recommandée."