导致以下情况的可能原因是什么?
我正在使用带有以下代码的自动完成脚本:
if (that.currentAjaxRequest !== null) {
that.currentAjaxRequest.abort();
}
that.currentAjaxRequest = $.get(query_string,
function(data) {
that.doStuff(data);
}
);
脚本被限制。因此,每次击键后,发送请求之前都会有大约 300 毫秒的延迟。
这在我的测试环境中运行得很好。然而,我在实时环境中遇到了一种情况,如果请求发送的时间间隔很近(大约 300 毫秒),那么每隔一段时间,最新的请求就会返回空。也就是说,数据将是“未定义的”。为什么会这样?
最佳答案
这似乎是 jQuery bug 1.4 中引入:当手动中止 ajax 调用时,jQuery 将使用空字符串调用 success 函数,而不是 error 函数。
您可以通过在回调中检查 xhr.status
来解决此问题:
function(data, textStatus, xhr) {
if (xhr.status) {
//a successful call
}
else {
//an aborted call
}
}
关于javascript - 请求在竞争条件下定期返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2630274/