¿Diferencia entre .success () y .complete ()?

103

A partir de jQuery 1.5, métodos AJAX todo de jQuery devuelven un jqXHRobjeto que proporciona .error(), .success()y .complete()métodos.

¿Cuál es la diferencia entre .success()y .complete()?

Rendicahya
fuente
2
@nix, ¿tiene un enlace que describa las cosas obsoletas con mayor detalle?
neoneye
@neoneye Ctrl + F "aviso de desaprobación" en api.jquery.com/jQuery.ajax/
ThatGuy

Respuestas:

223

.success()solo se llama si su servidor web responde con un 200 OKencabezado HTTP, básicamente cuando todo está bien.

Sin embargo, .complete()será siempre ser llamado, no importa si la llamada Ajax fue exitosa o no - tal vez emite errores y devuelve un error - integro () todavía ser llamado.

Vale la pena mencionar que .complete()lo recibirán después de que lo .success() llamen, si es que le importa.

arnorhs
fuente
11

success()se llama cuando el servidor devuelve un código de estado 200, complete()se llama siempre cuando se completa la solicitud, sin importar el resultado.

CarlosZ
fuente
1

success()se llama cuando el servidor devuelve el código de estado 200 , complete()se llama después success(). y veo alguna diferencia:

En success()usted no puede conseguir cadena de respuesta XML que se obtiene con $.ajax()y conjunto dataType:xml embargo, en complete()que puede obtener el formato de cadena de documento XML utilizando readed

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

success()se llama cuando el servidor devuelve success status code, como: 200, 201etc.

complete()se llama siempre cuando la solicitud está completa. (no importa, es una respuesta de éxito / error del servidor).


Entonces,

  • cuando hay una successrespuesta del servidor: complete()y success()se llama.
  • cuando hay una errorrespuesta del servidor: complete()y error()se llama.

Con qué propósito puede usar complete(): suponga que en beforeSend()usted muestra a loader image, y en complete(), puede ocultar eso loader image.

Mahfuz
fuente