method headers ejemplos done data jquery jqxhr

headers - jQuery.post().done() y éxito:



jquery post headers (4)

Documentación jQuery en jQuery.post( )

// Assign handlers immediately after making the request, // and remember the jqxhr object for this request var jqxhr = $.post( "example.php", function() { alert( "success" ); }) .done(function() { alert( "second success" ); }) .fail(function() { alert( "error" ); }) .always(function() { alert( "finished" ); }); // Perform other work here ... // Set another completion function for the request above jqxhr.always(function() { alert( "second finished" ); });

¿Cuál es la diferencia entre el parámetro success: y el método jqXHR.done( ) ? si no hay ninguno, ¿cuál es el objetivo del método jqXHR.done( ) ?


Ambos .done() y .success() son funciones de devolución de llamada y básicamente funcionan de la misma manera.

Aquí está la documentation . La diferencia es que .success() está en desuso a partir de jQuery 1.8. Debería usar .done() lugar.

En caso de que no desee hacer clic en el enlace:

Aviso de desaprobación

Los métodos de devolución de llamada jqXHR.success() , jqXHR.error() y jqXHR.complete() introducidos en jQuery 1.5 están en desuso a partir de jQuery 1.8. Para preparar su código para su eventual eliminación, use jqXHR.done() , jqXHR.fail() y jqXHR.always() lugar.


La razón para preferir Promesas sobre las funciones de devolución de llamada es tener múltiples devoluciones de llamada y evitar los problemas, como Callback Hell.

Retrollamada (para obtener más información, consulte http://callbackhell.com/ ): JavaScript asíncrono, o javascript que usa devoluciones de llamada, es difícil de entender de manera intuitiva. Muchos códigos terminan pareciéndose a esto:

asyncCall(function(err, data1){ if(err) return callback(err); anotherAsyncCall(function(err2, data2){ if(err2) return calllback(err2); oneMoreAsyncCall(function(err3, data3){ if(err3) return callback(err3); // are we done yet? }); }); });

Con las promesas anteriores, el código se puede reescribir de la siguiente manera:

asyncCall() .then(function(data1){ // do something... return anotherAsyncCall(); }) .then(function(data2){ // do something... return oneMoreAsyncCall(); }) .then(function(data3){ // the third and final async response }) .fail(function(err) { // handle any error resulting from any of the above calls }) .done();


jQuery solía tener SOLAMENTE las funciones de devolución de llamada para success error y complete .

Luego, decidieron apoyar las promesas con el objeto jqXHR y fue cuando agregaron .done() , .fail() , .always() , etc ... en el espíritu de la promesa API. Estos nuevos métodos tienen el mismo propósito que las devoluciones de llamada, pero en una forma diferente. Puede usar el estilo de API que mejor funcione para su estilo de codificación.

A medida que las personas se familiaricen cada vez más con las promesas y a medida que más y más operaciones asincrónicas utilicen ese concepto, sospecho que cada vez más personas pasarán a la promesa API a lo largo del tiempo, pero mientras tanto, jQuery admite ambas.

El método .success() ha quedado en desuso en favor de los nombres comunes de métodos de objeto de promesa.

Desde el documento jQuery , puede ver cómo varios métodos de promesa se relacionan con los tipos de devolución de llamada:

jqXHR.done (función (data, textStatus, jqXHR) {}); Una construcción alternativa a la opción de devolución exitosa, el método .done () reemplaza el método jqXHR.success () en desuso. Consulte deferred.done () para detalles de implementación.

jqXHR.fail (función (jqXHR, textStatus, errorThrown) {}); Una construcción alternativa a la opción de devolución de llamada de error, el método .fail () reemplaza el método obsoleto .error (). Consulte deferred.fail () para detalles de implementación.

jqXHR.always (función (datos | jqXHR, textStatus, jqXHR | errorThrown) {}); Una construcción alternativa a la opción de devolución de llamada completa, el método .always () reemplaza el método .complete () en desuso.

En respuesta a una solicitud exitosa, los argumentos de la función son los mismos que los de .done (): data, textStatus y el objeto jqXHR. Para las solicitudes fallidas, los argumentos son los mismos que los de .fail (): el objeto jqXHR, textStatus y errorThrown. Consulte diferido.always () para detalles de implementación.

jqXHR.then (función (data, textStatus, jqXHR) {}, función (jqXHR, textStatus, errorThrown) {}); Incorpora la funcionalidad de los métodos .done () y .fail (), lo que permite manipular (a partir de jQuery 1.8) el Promise subyacente. Consulte diferido.then () para detalles de implementación.

Si desea codificar de una manera que sea más compatible con el estándar ES6 Promises, entonces de estas cuatro opciones solo usaría .then() .


Desde el doc :

jqXHR.done (función (data, textStatus, jqXHR) {});

Una construcción alternativa a la opción de devolución exitosa, el método .done () reemplaza el método jqXHR.success () en desuso . Consulte deferred.done () para detalles de implementación.

El punto es solo una alternativa para la opción de devolución exitosa, y jqXHR.success() está en desuso.