Unterschied zwischen .success () und .complete ()?

103

Wie von jQuery 1.5, die alle AJAX Methoden jQuery zurückgeben jqXHRObjekt , das bietet .error(), .success()und .complete()Methoden.

Was ist der Unterschied zwischen .success()und .complete()?

Rendicahya
quelle
2
@nix hast du einen Link, der das veraltete Zeug detaillierter beschreibt?
Neoneye
@neoneye Strg + F "Verfallserklärung" auf api.jquery.com/jQuery.ajax/
ThatGuy

Antworten:

223

.success()wird nur aufgerufen, wenn Ihr Webserver mit einem 200 OKHTTP-Header antwortet - im Grunde genommen, wenn alles in Ordnung ist.

Allerdings .complete()wird immer egal aufgerufen , wenn der Ajax - Aufruf erfolgreich war oder nicht - vielleicht ausgegeben es Fehler und hat einen Fehler zurückgegeben - Das Gesamt () wird nach wie vor aufgerufen.

Es ist erwähnenswert, dass .complete()der Anruf nach dem .success() Anruf erfolgt - wenn es Ihnen wichtig ist.

arnorhs
quelle
11

success()wird aufgerufen, wenn der Server einen 200-Statuscode zurückgibt, complete()wird immer aufgerufen, wenn die Anforderung abgeschlossen ist, unabhängig vom Ergebnis.

CarlosZ
quelle
1

success()wenn der Server Rückkehr genannt 200 - Statuscode, complete()nach aufgerufen success(). und ich sehe einen Unterschied:

Auf können success()Sie keine XML-Antwortzeichenfolge erhalten, die Sie verwenden $.ajax()und festlegen. dataType:xml In können complete()Sie jedoch das Zeichenfolgenformat des gelesenen XML-Dokuments mit abrufen

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

success()aufgerufen wird , wenn der Server zurückgibt success status code, wie: 200, 201usw.

complete()wird immer aufgerufen, wenn die Anfrage abgeschlossen ist. (Egal, es ist eine Erfolgs- / Fehlerantwort vom Server.)


So,

  • wenn es eine successAntwort vom Server gibt: complete()und success()wird aufgerufen.
  • wenn es eine errorAntwort vom Server gibt: complete()und error()wird aufgerufen.

Zu welchem ​​Zweck können Sie verwenden complete(): Nehmen wir an, beforeSend()Sie zeigen ein loader imageund in complete()können Sie das verbergen loader image.

Mahfuz
quelle