如何检测请求是否中止?

时间:2010-09-05 23:51:18

标签: javascript jquery ajax

我正在提出请求,然后我立即中止。

var x = $.get(url, function (d, e, xhr) { alert(d); });
x.abort();

问题是它执行success函数并返回空数据...... (example here)

是否有一个jQuery方法可以中止?或者有没有办法检查xhr是否已中止?

4 个答案:

答案 0 :(得分:41)

检测请求中止并避免离线模式误报的最佳方法:

$("#loading").ajaxError(function(event, xhr) {
  if (xhr.status === 0) {
    if (xhr.statusText === 'abort') {
      // Has been aborted
    } else {
      // Offline mode
    }
  }
});

答案 1 :(得分:12)

我发现here xhr将返回状态为0的{​​{1}}。似乎是一个jQuery 1.4+错误。在1.3上它称为错误处理程序。

答案 2 :(得分:2)

编辑:试试这个:

x.onreadystatechange = null;
x.abort();

似乎工作。不确定是什么副作用。


原始回答:

仅测试收到的回复是否足够?

var x = $.get("./", function (d, e, xhr) {
    if(d) {
        // run your code with response
        alert(d);
    }
    // otherwise, nothing will happen
});

答案 3 :(得分:1)

这是设计的。测试data是否为null以确定请求是否正确响应。

  

如果使用jQuery.get()返回请求   一个错误代码,它将无声地失败   除非脚本也调用了   全球.ajaxError()方法。

处理此问题可能很有用(来自here)。