quelle est la différence entre le succès et l'.done () méthode de $.Ajax
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, veuillez donner des exemples.
4 réponses
En bref, découpler la fonction de rappel de succès de la fonction ajax afin que plus tard vous puissiez ajouter vos propres gestionnaires sans modifier le code d'origine (modèle d'observateur).
Veuillez trouver des informations plus détaillées ici: https://stackoverflow.com/a/14754681/1049184
success
ne se déclenche que si L'appel AJAX est réussi, c'est-à-dire renvoie finalement un statut HTTP 200. error
se déclenche si elle échoue et complete
lorsque la requête se termine, quel que soit le succès.
Dans jQuery 1.8 sur la jqXHR
objet (retourné par la $.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. Donc, ceux-ci font des choses 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"); });
Ce changement est pour compatibilité avec jQuery 1.5 objet différé . Différé (et maintenant Promise
, qui a un support de navigateur natif complet dans Chrome et FX) vous permettent d'enchaî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 à maintenir qu'un imbriquée pyramide de rappels que vous obtenez avec success
.
Cependant, veuillez noter que done
est maintenant obsolète en faveur 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é parce que async
et await
extend promet une syntaxe améliorée (et une gestion des erreurs):
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-fondamentalement quand tout va bien.
Les rappels attachés à done () seront déclenchés lorsque le différé est résolu. Les rappels 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 appelé lorsque la requête est réussie et fait partie de l'appel $.ajax
. done
fait partie de l'objet jqXHR
retourné par $.ajax()
, et remplace success
dans jQuery 1.8.