2

ユーザーが進む/戻るボタンをクリックしたときに未完了の AJAX 呼び出しが発生した場合に、次のコードを使用してabort()を実行しています。呼び出しを中止することはすべてうまく機能しますが、その後、関数の将来の呼び出しは機能しなくなります。アボート後に swapContent() を呼び出そうとしても、何もしません。中止後に AJAX 関数を再度呼び出すにはどうすればよいですか?

グローバル

var ajax;

AJAX

function swapContent() {

    ajax = $.ajax({
        type: 'GET',
        data: params,
        url: 'content.php',

        success: function(data) {
            $('#browser').html(data);
        },

        error:function(e){
          // Error
        }
    });
}

onPopstate

$(window).on('popstate', function() {

    // Abort active requests
    if(ajax && ajax.readystate != 4){
        ajax.abort();
    }

});
4

2 に答える 2

0

これはうまくいくように見えます....

グローバル

var ajax;

AJAX

function swapContent() {

    ajax = $.ajax({
        type: 'GET',
        data: params,
        url: 'content.php',

        // -- VERIFY AJAX IS NULL -- //

        beforeSend : function()    {           
                    if(ajax != null) {
                        ajax.abort(); // ABORT IF NOT NULL
                    }
        },

        success: function(data) {
            $('#browser').html(data);
            ajax = null; // NULL AJAX ON SUCCESS
        },

        error:function(e){
          // Error
        }
    });
}

onPopstate

$(window).on('popstate', function() {
    if(ajax && ajax.readystate != 4){
        ajax.abort();
        ajax = null; // NULL AFTER ABORT
    }
});
于 2016-04-26T22:01:08.737 に答える