Quelqu’un peut-il m’aider?
Je ne suis pas capable de comprendre la différence entre le success
et .done()
de $.ajax
.
Si possible, veuillez donner des exemples.
En résumé, le découplage de la fonction de rappel de succès de la fonction ajax pour que vous puissiez ultérieurement append vos propres gestionnaires sans modifier le code d’origine (motif de l’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
déclenche si elle échoue et se complete
lorsque la demande se termine, indépendamment du succès.
Dans jQuery 1.8 sur l’object jqXHR
(retourné par $.ajax
), le success
été remplacé par done
, l’ error
avec fail
et complete
avec always
.
Cependant, vous devriez toujours pouvoir initialiser la requête AJAX avec l’ancienne syntaxe. Donc, ils 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 est compatible avec l’ object différé de jQuery 1.5. Différé (et maintenant Promise
, qui prend entièrement 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 nestede de rappels que vous obtenez avec success
.
Cependant, notez que done
est maintenant déconseillé en faveur de la syntaxe Promise
qui utilise 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 la fonction async
et l’ await
extension améliorent la syntaxe (et la 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()
est appelé uniquement si votre serveur Web répond avec un en-tête HTTP 200 OK – essentiellement lorsque 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 réussit et fait partie de l’appel $.ajax
. done
fait partie de l’object jqXHR
renvoyé par $.ajax()
, et remplace le success
de jQuery 1.8.