Welche Parameter werden in jQuery an .fail gesendet?

107

Ich kann die Dokumentation zu den Namen der drei Parameter nicht finden, wenn dies $.ajaxfehlschlägt.

Im Moment benutze ich nur:

.fail(function(A, B, C) {
Phillip Senn
quelle
2
Wahrscheinlich das gleiche, das an den errorRückruf übergeben wird : jqXHR, textStatus, errorThrown.
Felix Kling

Antworten:

93

Laut http://api.jquery.com/jQuery.ajax/ sollte der failRückruf Folgendes erhalten:

jqXHR, textStatus, errorThrown

wie error, aber errorveraltet:

Hinweis zur Ablehnung: Die Rückrufe jqXHR.success (), jqXHR.error () und jqXHR.complete () werden in jQuery 1.8 nicht mehr unterstützt. Verwenden Sie stattdessen jqXHR.done (), jqXHR.fail () und jqXHR.always (), um Ihren Code für das eventuelle Entfernen vorzubereiten.

Nathanjosiah
quelle
Oh, ich habe es nicht bemerkt. Vielen Dank, dass Sie diesen Teil der Dokumentation geteilt haben. Ich bin froh, dass jQuery XHR-Rückrufe endlich mit Deferreds übereinstimmen.
Michael Mior
2
Oh, aber die ajaxError-Methode hat das Ereignis jqXHR, ajaxSettings, throwError.
Phillip Senn
Es sind alle dieselben Rückrufe, denen dieselben Argumente übergeben werden, nur unterschiedliche Verwendungen und Kontexte.
Nathanjosiah
6
Wo steht, dass der Fail-Callback diese 3 Argumente erhält? Dies wird auch für den vollständigen Einstellparameter angegeben. Diese sind unterschiedlich, z. B. unterscheiden sich die Argumente von completeden an übergebenen Argumenten done.
Tom
5
@ Tom, ich weiß, ich bin viel zu spät, um Ihnen zu antworten, aber es wird hier angegeben: api.jquery.com/jQuery.ajax/#jqXHR ( jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});)
Nathanjosiah
27

Hier ein Beispiel nach der Suche nach dem gleichen Problem:

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

Beim Debuggen habe ich:

  • jqXHR ist ein JS-Objekt
  • textStatus ist "Fehler"
  • Fehler ist "Interner Serverfehler", es ist die vom Server gesendete Fehlermeldung.
Olivier de Rivoyre
quelle
1
Ja, ich denke, sie versuchen mit dem Wort textStatus zu konnotieren, dass dies die Statusvariable ist und dass sie im Textformat vorliegt. Im Vergleich zu jqXHR, einem jQuery-Objekt.
Phillip Senn