2011-03-09 26 views
93

A partir de jQuery 1.5, todos los métodos AJAX de jQuery devuelven un objeto jqXHR que proporciona los métodos .error(), .success() y .complete().Diferencia entre .success() y .complete()?

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

+2

@nix ¿tiene un enlace que describa las cosas en desuso en mayor detalle? – neoneye

+0

@neoneye Ctrl + F "notificación de obsolescencia" en api.jquery.com/jQuery.ajax/ – ThatGuy

+3

http://i.stack.imgur.com/JogVo.png –

Respuesta

207

.success() solo recibe una llamada si su servidor web responde con un encabezado HTTP 200 OK, básicamente cuando todo está bien.

Sin embargo, se .complete() siempre consigo 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() se llamará después .success() es llamada - si es importante para usted.

9

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

0

success() llama cuando se restablece el código de estado del servidor , complete() se llama después de success(). Y veo alguna diferencia:

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

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