我正在使用动态分页。
我需要在启动另一个事件之前取消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
,则不会发生任何事情。
答案 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;
}
}
});
});
});
这样,如果这不是正确的请求,则不会执行成功回调。