95

jQuery AJAX呼び出しにJavaの「最終的に」類似物はありますか? ここにこのコードがあります。私は常に例外をスローしますが、常にthen()メソッドに移動させたいと思っています。

    call.xmlHttpReq = $.ajax({
        url : url,
        dataType : 'json',
        type : 'GET'
    }).always(function(processedDataOrXHRWrapper, textStatus, xhrWrapperOrErrorThrown) {

       throw "something";

    }).then(function() {

        alert("i want to always run no matter what");
    });

done()complete()、および別のalways()を使用しようとしましたが、何も機能していないようです。

JSFiddle は次のとおりです。

http://jsfiddle.net/qv3t3L0m/

4

6 に答える 6

46

.always()動作するはずです。http://api.jquery.com/jQuery.ajax/の「jqXHR オブジェクト」セクションを参照してください。

jqXHR.always(function(data|jqXHR, textStatus, jqXHR|errorThrown) { }); 完全なコールバック オプションの代替構造である .always() メソッドは、非推奨の .complete() メソッドを置き換えます。

リクエストが成功すると、関数の引数は .done() の引数と同じになります: data、textStatus、および jqXHR オブジェクト。失敗したリクエストの場合、引数は .fail() の引数と同じです: jqXHR オブジェクト、textStatus、および errorThrown。実装の詳細については、deferred.always() を参照してください。

http://api.jquery.com/deferred.always/も参照してください。

于 2013-04-10T12:18:20.410 に答える
2

ajax はサーバーに依存するバグがあり、状態を確認する必要があるのは "complete" が最適で、一種の "success"、"error" などは PUT、POST、GET の 100% ではありません。例で

$.ajax({
    url: '/api/v2/tickets/123456.json',
    ....
    ....
    ....
    complete: function(data) { 
        if (data.statusText == "success") { 
            console.log("Sent successfully");
        } else { 
            console.log("Not Sent");
        }
    }
});

悪い英語でごめんなさい!乾杯 ;-)

于 2016-04-06T13:29:14.350 に答える
1

すべての ajax リクエストに対して 1 つのコード定義が必要な場合は、次のようにすることができます

$(document).ajaxComplete(function () {
    console.log('ajax complete on doc');
})
于 2018-12-20T21:40:51.137 に答える