¿Cuáles son los parámetros enviados a .fail en jQuery?

107

No puedo encontrar la documentación sobre cuáles son los nombres de los tres parámetros cuando $.ajaxfalla.

En este momento, solo estoy usando:

.fail(function(A, B, C) {
Phillip Senn
fuente
2
Probablemente el mismo que se pasan a la errordevolución de llamada: jqXHR, textStatus, errorThrown.
Felix Kling

Respuestas:

93

De acuerdo con http://api.jquery.com/jQuery.ajax/, la faildevolución de llamada debería recibir:

jqXHR, textStatus, errorThrown

igual que error, pero errorestá obsoleto:

Aviso de obsolescencia: las devoluciones de llamada jqXHR.success (), jqXHR.error () y jqXHR.complete () quedarán obsoletas en jQuery 1.8. Para preparar su código para su eventual eliminación, use jqXHR.done (), jqXHR.fail () y jqXHR.always () en su lugar.

Nathanjosiah
fuente
Oh, no me di cuenta. Gracias por compartir esa parte de la documentación. Me alegro de que las devoluciones de llamada de jQuery XHR finalmente coincidan con los diferidos.
Michael Mior
2
Oh, pero el método ajaxError tiene event, jqXHR, ajaxSettings, thrownError.
Phillip Senn
Todos son la misma devolución de llamada que se pasan los mismos argumentos, solo diferentes usos y contextos.
nathanjosiah
6
¿Dónde dice que la devolución de llamada fallida obtiene estos 3 argumentos? También lo indica para el parámetro de ajuste completo. Estos son diferentes, por ejemplo, los argumentos a completeson diferentes a los argumentos pasados done.
Tom
5
@Tom, sé que llego tarde para responderte, pero se indica aquí: api.jquery.com/jQuery.ajax/#jqXHR ( jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});)
nathanjosiah
27

Aquí un ejemplo después de buscar el mismo problema:

this.GetOrderList = function (customerId) {
    var self = this;
    $.post('MySuperServer.aspx', { customerId: customerId })
    .done(function (dataStr) {
        var orderList = jQuery.parseJSON(dataStr);
        self.process(orderList);
    })
    .fail(function (jqXHR, textStatus, error) {
        console.log("Post error: " + error);
    });
}

Mientras depuro, tengo:

  • jqXHR es un objeto JS
  • textStatus es "error"
  • error es "Error interno del servidor", es el mensaje de error enviado por el servidor.
Olivier de Rivoyre
fuente
1
Sí, creo que lo que están tratando de connotar al usar la palabra textStatus es que esta es la variable de estado y que está en formato de texto. En comparación con jqXHR, que es un objeto jQuery.
Phillip Senn