如何在jquery中停止Ajax调用

5
我想在jquery中停止一个ajax调用,但不起作用。
var xhr = null;

xhr = $.ajax({
    url : 'www.example.com?some-large-call',
    success : function(responseText) {
        // some DOM manipulation
    }
});

$("#button").click(function() { xhr.abort() });

我参考了下面的链接:

http://www.stoimen.com/blog/2009/09/29/jquery-stop-an-ajax-call/


你在这个过程中检查了控制台吗?如果有的话,它显示了什么? - BenM
始终定义“不起作用”!因为我猜它能工作,但不是你所期望的。那么你期望什么? - A. Wolff
3个回答

3

这个可能与XHR有更多关联。

请参考以下答案:

jquery abort() ajax request before sending another

从该链接中可以得到以下信息:

每次进行ajax请求时,都将其添加到数组中:

requests.push(
$.ajax({
    type: 'post',
    url: '/test.php',
    data: search_data,
    success: function(data) {
        $('#catalog').html(data);
    }
}));

然后,当你想停止调用时...遍历数组并中止所有调用...

 for(var i = 0; i < requests.length; i++)
requests[i].abort();

谢谢


1
不鼓励使用链接回答。 - Silviu Burcea
我没有足够的声望来添加评论到其他任何地方:( - 如果可以的话,我可以删除吗? - JF it
1
以下是关于编程的内容,请将其从英文翻译成中文。只需返回翻译后的文本即可:无需删除,只需在此答案中添加摘要。编程相关内容的翻译如下: - Silviu Burcea
1
@JFit,你应该投票关闭问题,因为它是重复的。 - A. Wolff
抱歉,Wolff。我不确定如何做这个。我将更新我的评论。 - JF it

3

xhr.abort()会导致客户端停止监听事件,但可能无法阻止服务器进行处理。


0

如果您粘贴的代码是实际使用的代码,那么它无法正常工作就不足为奇了。

正如网站上所述,这只是伪代码,用于说明示例。那里没有任何AJAX请求,也没有任何可以阻止它(至少没有足够大的东西可以阻止它)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接