0

すべてのAJAXリクエストに対してグローバルな動作を設定したいのですが、このようにキューを中断する必要がある場合があります

$.ajaxSetup({
    success: function(data, textStatus, jqXHR) {
        if ( data.error ) { jqXHR.reject(); }
    }
});
// later
$.ajax({ some: option }).done( function(html) { do_something(html); } );

ここで、data.errorが存在するときに終了したい(function(html)でdoneを呼び出さないでください)

出来ますか ?それとも別の方法がありますか?

4

1 に答える 1

2

jqXHRを直接解決することはできません。

jqXHRはPromiseインターフェースを実装します。これは、状態の取得やコールバックの追加に使用できますが、状態の変更には使用できません。

リファレンスhttp://api.jquery.com/jQuery.ajax/#jqXHR

$ .ajaxSetup(success:defaultHandler})を試しましたか?ただし、これは、元のオプションでハンドラーを指定した場合にのみ機能します。のように:$。ajax({url:'someurl'、success:someHandler});

その他のアイデアについては、これが役立つかどうかを確認してください:http: //forum.jquery.com/topic/stop-a-deferred-callback-queue-in-progress

于 2012-05-30T22:24:31.147 に答える