全局中止所有jQuery AJAX请求

Rob*_*t W 19 javascript jquery

有没有办法在没有请求对象句柄的情况下全局中止所有Ajax请求?

我问的原因是我们有一个非常复杂的应用程序,我们使用setTimeOut()在后台运行许多不同的Ajax请求.如果用户单击某个按钮,我们需要暂停所有正在进行的请求.

Sar*_*raz 13

你需要调用abort()方法:

var request = $.ajax({
    type: 'POST',
    url: 'someurl',
    success: function(result){..........}
});
Run Code Online (Sandbox Code Playgroud)

之后,您可以中止请求:

request.abort();
Run Code Online (Sandbox Code Playgroud)

这样,您需要为ajax请求创建一个变量,然后您可以使用该abort方法随时中止请求.

另外看看:


7wp*_*7wp 7

如果您没有跟踪它们的句柄,则无法中止所有活动的Ajax请求.

但是如果你正在跟踪它,那么你可以通过循环处理程序并调用.abort()每个程序来实现它.


小智 5

您可以使用以下脚本:

// $.xhrPool and $.ajaxSetup are the solution
$.xhrPool = [];
$.xhrPool.abortAll = function() {
    $(this).each(function(idx, jqXHR) {
        jqXHR.abort();
    });
    $.xhrPool = [];
};

$.ajaxSetup({
    beforeSend: function(jqXHR) {
        $.xhrPool.push(jqXHR);
    },
    complete: function(jqXHR) {
        var index = $.xhrPool.indexOf(jqXHR);
        if (index > -1) {
            $.xhrPool.splice(index, 1);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/s4pbn/3/上检查结果。

  • 您复制了[here](http://stackoverflow.com/a/8841412/1767377)并将其粘贴到此处。虽然我很欣赏jsfiddle **-1,因为您没有在应得的信用额度上给予好评。**现在为电影加引述一段话:“对你不敬,对母牛不屑,对叔叔不屑...”-木兰 (10认同)
  • 有关详细信息,请参阅http://stackoverflow.com/questions/1232040/how-to-empty-an-array-in-javascript (2认同)