取消ajax()成功

时间:2012-12-28 17:07:48

标签: javascript jquery ajax

我正在使用动态分页。

我需要在启动另一个事件之前取消jQuery success中的ajax事件。

我设置了一个等于$.ajax()的变量,在此之前,无论如何,我都会调用abort

问题是success仍然会触发。

Ajax: How to prevent jQuery from calling the success event after executing xmlHttpRequest.abort();的答案是错误的,或者至少它对我不起作用,因为如果我在abort任何事情发生之后立即触发ajax

我只是希望success变量的ajax在另一个变量即将开始时不会触发。

代码段:

if(updatePageAJAX){
    updatePageAJAX.abort();
}

updatePageAJAX = $.ajax({
});

如果您愿意,我可以提供更多详细信息,但updatePageAJAX有效。我无法告诉你abort是否有效。我在alert中放了一个if来查看它是否会触发;确实如此。

如果我在设置abort之后立即updatePageAJAX = $.ajax,则不会发生任何事情。

1 个答案:

答案 0 :(得分:2)

您是否尝试将xhr对象保存在变量中,以便您可以检查成功回调是否是正确的xhr对象? 例如:

$(function() {
    var xhr = null;

    $('.link').click(function() {
        var page = $(this).text();
        if(xhr != null) {
            xhr.abort();
        }
        xhr = $.ajax({
            type: 'GET',
            url: 'index.php',
            data: 'js=true&page=' + page,
            success: function(data, responseCode, jqxhr) {
                if(xhr == jqxhr) {
                    $('#page').text(data);
                    xhr = null;
                }
            }
        });
    });
});

这样,如果这不是正确的请求,则不会执行成功回调。