javascript - 順番 - jquery ajax



jQueryのAJAX呼び出しに「最後に」アナログがありますか? (4)

jQuery 3.0以降を使用している人のためのメモ

非推奨通知:jqXHR.success()、jqXHR.error()、およびjqXHR.complete()コールバックはjQuery 3.0以降で削除されています。 代わりに、jqXHR.done()、jqXHR.fail()、およびjqXHR.always()を使用できます。

http://api.jquery.com/jquery.ajax/

https://code.i-harness.com

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() 、another ()を使用しようとしましたが、何も動作していないようです。

JSFiddleはここにあります:

http://jsfiddle.net/qv3t3L0m/


jQueryの約束の実装は、渡されたメソッドでスローされたエラーを処理しないため、以下の提案はjQueryでは機​​能しません。 私は、jQueryが約束/ A +に準拠していれば、可能なことを説明するためにここに残しています。 Bergiが正しく指摘しているように、自分のtry catchブロックでコードを手動でラップする必要があります。

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

   throw "something";

}).always(function() {

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

jqueryの約束が常にサポートされているかどうかはわかりませんが、代わりに(再)を使用してsuccessHandlerとerrorHandlerの両方と同じ関数を次のように渡すことがあります:

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

   throw "something";

}).then(function() {

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

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

この例を参照してください。

$.ajax({
        type: "GET",
        dataType: dataType,
        contentType: contentType,
        async: TRUE,
        url: $('html form:nth-child(1)').attr('action') + "?" $('html form:nth-child(1)').serialize(),
        success: function(data) {
            console.log("FUNFOU!");
        },
        error: function(data) {
            console.log("NÃO FUNFOU!");
        },
        complete: function(data) {
            console.log("SEMPRE FUNFA!"); 
            //A function to be called when the request finishes 
            // (after success and error callbacks are executed). 
        }
    });

詳細情報: http://api.jquery.com/jquery.ajax/ : http://api.jquery.com/jquery.ajax/


サーバーに依存するバグajaxがあり、 "完全"のステータスを確認する必要があります。 "成功"、 "エラー"などの種類があります。他は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");
        }
    }
});

申し訳ありませんが悪い英語! 応援;-)





promise