Différence entre .success () et .complete ()?

103

A partir de jQuery 1.5, toutes les méthodes AJAX jQuery renvoient un jqXHRobjet qui fournit .error(), .success()et des .complete()méthodes.

Quelle est la différence entre .success()et .complete()?

Rendicahya
la source
2
@nix avez-vous un lien qui décrit plus en détail les éléments obsolètes?
neoneye
@neoneye Ctrl + F "avis d'obsolescence" sur api.jquery.com/jQuery.ajax/
ThatGuy

Réponses:

223

.success()n'est appelé que si votre serveur Web répond avec un 200 OKen-tête HTTP - essentiellement lorsque tout va bien.

Cependant, .complete()sera toujours appelé, peu importe si l'appel ajax a réussi ou non - peut-être qu'il a généré des erreurs et renvoyé une erreur - .complete () sera toujours appelé.

Il convient de mentionner qu'il .complete()sera appelé après .success() avoir été appelé - si cela compte pour vous.

Arnorhs
la source
11

success()est appelée lorsque le serveur renvoie un code d'état 200, complete()est toujours appelée lorsque la demande est terminée, quel que soit le résultat.

CarlosZ
la source
1

success()appelé lorsque le serveur renvoie le code d'état 200 , complete()est appelé après success(). et je vois une différence:

On success()ne peut pas obtenir la chaîne de réponse xml que vous utilisez $.ajax()et que vous définissez dataType:xml Mais dans complete()vous pouvez obtenir le format de chaîne du document xml lu en utilisant

$.ajax({
url:'??',
dataType:'xml',
oncomplete: function(data,status){
console.log(data.responseText);
}
})
Mostafa
la source
0

success()est appelée lorsque le serveur renvoie success status code, comme: 200, 201etc.

complete()est toujours appelée lorsque la demande est terminée. (peu importe, c'est une réponse de succès / erreur du serveur.)


Alors,

  • quand il y a une successréponse du serveur: complete()et success()est appelé.
  • quand il y a une errorréponse du serveur: complete()et error()est appelé.

Dans quel but vous pouvez utiliser complete(): supposons que dans beforeSend()vous affichez un loader image, et dans complete(), vous pouvez le cacher loader image.

Mahfuz
la source