Quelle est la différence entre le succès et la méthode .done () de $ .ajax

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.