Jakie parametry są wysyłane do .fail w jQuery?

107

Nie mogę znaleźć dokumentacji na temat nazw trzech parametrów w przypadku $.ajaxniepowodzenia.

W tej chwili używam tylko:

.fail(function(A, B, C) {
Phillip Senn
źródło
2
Prawdopodobnie to samo, które są przekazywane do errorzwrotnego: jqXHR, textStatus, errorThrown.
Felix Kling

Odpowiedzi:

93

Według http://api.jquery.com/jQuery.ajax/ do failzwrotnego powinno być uzyskanie:

jqXHR, textStatus, errorThrown

to samo co error, ale errorjest przestarzałe:

Uwaga dotycząca wycofania: wywołania zwrotne jqXHR.success (), jqXHR.error () i jqXHR.complete () zostaną wycofane w jQuery 1.8. Aby przygotować kod do ostatecznego usunięcia, użyj zamiast tego jqXHR.done (), jqXHR.fail () i jqXHR.always ().

nathanjosiah
źródło
Ooh, nie zauważyłem. Dzięki za udostępnienie tego fragmentu dokumentacji. Cieszę się, że callbacki jQuery XHR w końcu pasują do Deferreds.
Michael Mior
2
Aha, ale metoda ajaxError ma zdarzenie, jqXHR, ajaxSettings, thrownError.
Phillip Senn
Wszystkie są tymi samymi wywołaniami zwrotnymi, które otrzymują te same argumenty, tylko różne zastosowania i konteksty.
nathanjosiah
6
Gdzie stwierdza, że ​​wywołanie zwrotne niepowodzenia pobiera te 3 argumenty? Stwierdza to również dla całego parametru ustawień. Są one różne, np. Argumenty do completesą inne niż argumenty przekazane do done.
Tom
5
@Tom, wiem, że spóźnię się, aby odpowiedzieć, ale jest to napisane tutaj: api.jquery.com/jQuery.ajax/#jqXHR ( jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});)
nathanjosiah
27

Oto przykład po szukaniu tego samego problemu:

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);
    });
}

Podczas debugowania mam:

  • jqXHR to obiekt JS
  • textStatus to „błąd”
  • błąd to „Internal Server Error”, jest to komunikat o błędzie wysłany przez serwer.
Olivier de Rivoyre
źródło
1
Tak, myślę, że to, co próbują skojarzyć za pomocą słowa textStatus, to to, że jest to zmienna statusu i ma format tekstowy. W porównaniu do jqXHR, który jest obiektem jQuery.
Phillip Senn