0

ドキュメントの準備ができたら、設定しました

    $.ajaxSetup({
        "error": function (XMLHttpRequest, textStatus, errorThrown) {
            if(XMLHttpRequest.status == 403) {
                display_modal( 'Please login to continue.', 'Session in closed.');
                //XMLHttpRequest.abort();
            }
        }
    });

認証されていないユーザーからの ajax リクエストを防止します。

しかし、特定のビューでは、POST/GET リクエストが行われると、

   var posting = $.post(
            post_url, 
            $("#" + form).serialize(),
            function(data) {
                packet = data;
            },
            'json'
    );
    posting.done(function() { 
        form_post_response_function(e, packet); 
    });
    posting.fail(function() {
        var packet = {};
        packet.data = {};
        packet.data.type = "Ajax Post Fail";
        packet.status = -200;
        packet.statusMessage = "ERROR";
        form_post_response_function(e, packet); 
    });

私は呼ばれることを期待してposting.fail(function() {いましたgetting.fail(function() {が、呼ばれませんでした。しかし、それらはそうであるため、すべてのフローが進み、403 メッセージに重なる別のモーダルで終了します。

raw なしでこれを回避するにはどうすればよい$.ajaxですか? エラーキャッチでJQueryフローを停止するにはどうすればよいですか?

最終コード

posting.fail(function(jqXHR, textStatus, errorThrown) {
    if(jqXHR.status != 403) {
        var packet = {};
        packet.data = {};
        packet.data.type = "Ajax Post Fail";
        packet.status = -200;
        packet.statusMessage = "ERROR";
        form_post_response_function(e, packet); 
} else {
           // event also can be accessed here
           $(get_target(e)).button('reset');
    }
});

そして静かに止まる。いいね。

4

2 に答える 2

0

すべての詳細については、質問を参照してください

これが最終的なコードです

posting.fail(function(jqXHR, textStatus, errorThrown) {
    if(jqXHR.status != 403) {
        var packet = {};
        packet.data = {};
        packet.data.type = "Ajax Post Fail";
        packet.status = -200;
        packet.statusMessage = "ERROR";
        form_post_response_function(e, packet); 
} else {
           // event also can be accessed here
           $(get_target(e)).button('reset');
    }
});
于 2013-09-08T16:14:36.880 に答える
0

例外をスローして、以降のコードの実行を停止します。

例えば:throw "stop execution here";

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/throw

于 2013-09-06T09:30:20.223 に答える