2

我正在使用动态分页。

在开始另一个之前,我需要success在 jQuery 中取消该事件。ajax

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

问题是它success仍然会着火。

Ajax的答案:如何防止jQuery在执行xmlHttpRequest.abort()后调用成功事件;是错误的,或者至少它对我不起作用,因为如果我abort在什么都没有发生后立即开火ajax

如果另一个变量即将开始,我只想不触发success变量。ajax

代码片段:

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

updatePageAJAX = $.ajax({
});

如果您愿意,我可以提供更多详细信息,但updatePageAJAX可以。我不能告诉你是否abort有效。我在里面放了一个alertif它是否着火;确实如此。

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

4

1 回答 1

3

您是否尝试过将您的 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;
                }
            }
        });
    });
});

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

于 2012-12-28T17:36:11.610 回答