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.
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.
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:
utilisé comme paramètre et .success()
comme méthode sur un jqXHR
. Ce dernier est obsolète, mais le premier est ce que le PO demandait.
success
se déclenche uniquement si l'appel AJAX réussit, c'est-à-dire renvoie finalement un état HTTP 200. error
se déclenche en cas d'échec etcomplete
lorsque la demande se termine, quel que soit le succès.
Dans jQuery 1.8 sur l' jqXHR
objet (retourné par $.ajax
) a success
été remplacé par done
, error
par fail
et complete
par 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"); });
Cette modification concerne la compatibilité avec l' objet différé de jQuery 1.5 . Différé (et maintenant Promise
, qui a une prise en charge complète du navigateur natif dans Chrome et FX) vous permet 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'une pyramide imbriquée de rappels que vous obtenez success
.
Cependant, veuillez noter que done
c'est désormais obsolète au profit de la Promise
syntaxe qui utilise à la then
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
étendre 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
, dans jQuery 1.8 qui a été remplacé par done
. Ils fonctionnent de la même manière, mais done
sont plus cohérents avec le reste de jQuery.
.done
C'était le premier coup (et maintenant l'impasse) de jQuery à ce qui est devenu Promise
et qui a maintenant un support linguistique assez complet. Dans de nouveaux projets, j'utiliserais à la const response = await fetch(...)
place.
.success()
n'est appelé que si votre serveur Web répond avec un en-tête HTTP 200 OK - essentiellement 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 qui est appelé lorsque la demande aboutit et fait partie de l' $.ajax
appel. done
fait en fait partie de l' jqXHR
objet renvoyé par $.ajax()
et remplace success
dans jQuery 1.8.