【问题标题】:aborting ajax call javascript中止 ajax 调用 javascript
【发布时间】:2012-10-07 13:37:06
【问题描述】:

我使用下面来自 Stackoverflow 答案的代码来中止 JavaScript/jQuery 中的 AJAX 调用。

$.xhrPool.abortAll = function () {
  // alert('aborting.... outside');

  $(this).each(function (idx, jqXHR) {
    //jqXHR.abort();

    if (jqXHR && jqXHR.readyState != 4) {
        alert('aborting.... outside');
        jqXHR.abort();
    }
  });
  $.xhrPool.length = 0

  clearTimeout(timeoutOfCall);
  timeoutOfCall = null;
};

但是,当我这样调用这个函数时:

$.xhrPool.abortAll();

它在 IE 9 中的“未知属性”中生成错误,并且在 Chrome 中也不起作用。 它仅适用于 FF。

【问题讨论】:

标签: javascript jquery ajax call abort


【解决方案1】:

如果您想停止特定的 ajax 调用并且您的 jquery 是 1.5.1 或最新版本,您可以使用 jqXHR 对象的“abort”方法。

var jqxhr = $.ajax(your ajax call);
jqxhr.abort();

【讨论】:

  • 是的,'abort()' 将停止客户端(浏览器)监听来自服务器的响应。问题是它不会停止服务器本身来生成响应的请求。另一种方法是重新发送请求以告诉服务器停止处理先前的请求。这是对服务器的额外调用,大多数情况下是不必要的。这真的取决于之前提出的哪种请求......
  • 不,我想停止所有挂起并使用 setinterval 函数创建的呼叫。我正在开发一个 GPS 系统应用程序。所以,我想每 30 秒更新一次地图上的设备信息。因此,当我更改设备时,应该中止之前设备的所有未决 ajax 调用。
  • 哦,我误解了你的问题。
  • 嗨 Vasily,此代码是否仅适用于 1.5.1 jquery 版本? 1.7.1,1.8.1等更高版本不支持???
  • 大家好,它现在正在工作。我添加了 2 个 var,例如:var xhrPool = []; $.xhrPool = [];我刚刚删除了“var xhrPool = [];”这个,它现在正在工作。感谢您的时间和帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 2011-11-24
相关资源
最近更新 更多