Quelqu'un peut-il m'aider?
Je ne suis pas en mesure de comprendre la différence entre success
et .done()
de $.ajax
.
Si possible, donnez des exemples.
En bref, découplez la fonction de rappel de réussite de la fonction ajax afin que vous puissiez ultérieurement ajouter vos propres gestionnaires sans modifier le code d'origine (modèle d'observateur).
Veuillez trouver des informations plus détaillées à partir d'ici: https://stackoverflow.com/a/14754681/1049184
success
ne se déclenche que si l'appel AJAX est réussi, c'est-à-dire qu'il renvoie finalement un statut HTTP 200. error
se déclenche s'il échoue et complete
quand la demande se termine, indépendamment du succès.
Dans jQuery 1.8 sur l’objet jqXHR
(renvoyé par $.ajax
) success
a été remplacé par done
, error
avec fail
et complete
avec always
.
Cependant, vous devriez toujours pouvoir initialiser la requête AJAX avec l'ancienne syntaxe. Ces opérations ont donc des effets similaires:
// set success action before making the request
$.ajax({
url: '...',
success: function(){
alert('AJAX successful');
}
});
// set success action just after starting the request
var jqxhr = $.ajax( "..." )
.done(function() { alert("success"); });
Cette modification concerne la compatibilité avec objet différé de jQuery 1.5. Différé (et maintenant Promise
, qui prend en charge le navigateur natif dans Chrome et FX) vous permet de chaîner des actions asynchrones:
$.ajax("parent").
done(function(p) { return $.ajax("child/" + p.id); }).
done(someOtherDeferredFunction).
done(function(c) { alert("success: " + c.name); });
Cette chaîne de fonctions est plus facile à gérer qu'une pyramide imbriquée de rappels obtenue avec success
.
Cependant, veuillez noter que done
est maintenant déconseillé au profit de la syntaxe Promise
qui utilise then
à la place:
$.ajax("parent").
then(function(p) { return $.ajax("child/" + p.id); }).
then(someOtherDeferredFunction).
then(function(c) { alert("success: " + c.name); }).
catch(function(err) { alert("error: " + err.message); });
Cela vaut la peine d’être adopté car async
et await
extend promettent une syntaxe (et une gestion des erreurs) améliorées:
try {
var p = await $.ajax("parent");
var x = await $.ajax("child/" + p.id);
var c = await someOtherDeferredFunction(x);
alert("success: " + c.name);
}
catch(err) {
alert("error: " + err.message);
}
.success()
n'est appelé que si votre serveur Web répond avec un en-tête HTTP 200 OK, c'est-à-dire lorsque tout va bien.
Les callbacks attachés à done () seront déclenchés lorsque le différé sera résolu. Les callbacks attachés à fail () seront déclenchés lorsque le différé est rejeté.
promise.done(doneCallback).fail(failCallback)
.done() has only one callback and it is the success callback
success
est le rappel qui est appelé lorsque la demande aboutit et fait partie de l'appel $.ajax
. done
fait en fait partie de l'objet jqXHR
renvoyé par $.ajax()
et remplace success
dans jQuery 1.8.