我正在提出请求,然后我立即中止。
var x = $.get(url, function (d, e, xhr) { alert(d); });
x.abort();
问题是它执行success
函数并返回空数据...... (example here)
是否有一个jQuery方法可以中止?或者有没有办法检查xhr
是否已中止?
答案 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)。