Differenza tra .success () e .complete ()?


103

Come di jQuery 1.5, metodi AJAX tutti di jQuery restituiscono un jqXHRoggetto che fornisce .error(), .success()e .complete()metodi.

Qual'è la differenza tra .success()e .complete()?


2
@nix hai un link che descrive le cose deprecate in maggior dettaglio?
neoneye

@neoneye Ctrl + F "deprecation notice" su api.jquery.com/jQuery.ajax/
ThatGuy

Risposte:


223

.success()viene chiamato solo se il tuo server web risponde con 200 OKun'intestazione HTTP, in pratica quando tutto va bene.

Tuttavia, .complete()verrà sempre chiamato indipendentemente dal fatto che la chiamata ajax abbia avuto successo o meno - forse ha emesso errori e ha restituito un errore - .complete () verrà comunque chiamato.

Vale la pena ricordare che .complete()verrà chiamato dopo essere stato .success() chiamato, se è importante per te.


11

success()viene chiamato quando il server restituisce un codice di stato 200, complete()viene chiamato sempre quando la richiesta è completa, indipendentemente dal risultato.


1

success()chiamato quando il server restituisce il codice di stato 200 , complete()viene chiamato dopo success(). e vedo qualche differenza:

Su success()non puoi ottenere la stringa di risposta xml che usi $.ajax()e imposta dataType:xml Ma complete()puoi ottenere il formato stringa del documento xml letto usando

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

0

success()viene chiamato quando il server restituisce success status code, come: 200, 201etc.

complete()viene chiamato sempre quando la richiesta è completa. (non importa, è una risposta di successo / errore dal server.)


Così,

  • quando c'è una successrisposta dal server: complete()e success()viene chiamato.
  • quando c'è una errorrisposta dal server: complete()e error()viene chiamato.

Per quale scopo puoi usare complete(): supponi beforeSend()di mostrare a loader image, e in complete(), puoi nasconderlo loader image.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.