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.
jquery
jquery-deferred
Poonam Bhatt
la source
la source
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
la source
success:
utilisé comme paramètre et.success()
comme méthode sur unjqXHR
. 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
) asuccess
été remplacé pardone
,error
parfail
etcomplete
paralways
.Cependant, vous devriez toujours pouvoir initialiser la requête AJAX avec l'ancienne syntaxe. Donc, ceux-ci font des choses similaires:
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: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 laPromise
syntaxe qui utilise à lathen
place:Cela vaut la peine d'être adopté car
async
etawait
étendre promet une syntaxe améliorée (et une gestion des erreurs):la source
success
, dans jQuery 1.8 qui a été remplacé pardone
. Ils fonctionnent de la même manière, maisdone
sont plus cohérents avec le reste de jQuery..done
C'était le premier coup (et maintenant l'impasse) de jQuery à ce qui est devenuPromise
et qui a maintenant un support linguistique assez complet. Dans de nouveaux projets, j'utiliserais à laconst 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é.
la source
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 remplacesuccess
dans jQuery 1.8.la source