通过按钮点击事件取消当前的ajax请求!

如果我的ajax请求花费很长时间连接速度较慢,我想取消。

我在.ajaxStart()时显示一个叠加层,如果超过五个secons(我使用setInterval管理),则会在叠加层上显示一个按钮,该按钮将取消当前的ajax请求。

inheritance了我的一些代码:

 jqXHR = $.ajax({ url: 'includes/inc_ajax.php', type: 'POST', data: '&ajax=1&action=7', success: function (txt) { var cntr = $.parseJSON(txt); $("#onlineppl").html(cntr.online); $("#todayppl").html(cntr.bugun); $("#totalppl").html(cntr.toplam); } }); $("#abortAjax").button({ icons: {secondary: "ui-icon-cancel"} }).click(function() { $(jqXHR).abort(); }); 

我是否必须将$.ajax()函数分配给变量才能中止它? 我也有很多由ajax调用的ajax请求,所以我猜浏览器无法跟踪导致中止方法无法工作的相同var名称。

这是我的第一个问题,我有点困惑。 任何帮助赞赏。 谢谢。

好吧,你试着尝试:

 jqXHR.abort(); 

Whitout $()

注意它未经测试,我在某处看到了它

编辑

Aah发现了:

在jQuery中停止所有活动的ajax请求

是的,JavaScript是一种基于原型的语言,每个对象实例都有一个指针。 当两个ajax调用启动时,你的jqXHR只返回指向第二个ajax调用的指针。 这篇文章中也指出了你必须从函数中获取一个令牌,以便你可以在以后引用它来取消它。

注意 – 收到后,您无法真正阻止AJAX请求在服务器上进行处理。 即使浏览器不再侦听响应,服务器也将继续处理请求。 除了手动实现某些内容(例如由不同页面设置的会话属性检查)之外,没有可靠的方法使Web服务器停止处理正在进行的请求。

所以基本上服务器仍然会运行,但是客户端浏览器会忽略响应 – 请注意,这也会影响您对域的连接限制(默认情况下通常只有两个)。