以下可能的原因是什么?
我正在使用带有以下代码的自动完成脚本:
if (that.currentAjaxRequest !== null) {
that.currentAjaxRequest.abort();
}
that.currentAjaxRequest = $.get(query_string,
function(data) {
that.doStuff(data);
}
);
脚本受到限制。因此,在发送请求之前,每次击键后都会有大约300毫秒的延迟。
这在我的测试环境中运行良好。但是,我遇到了在实时环境中的情况,在这种情况下,如果请求被发送到彼此附近(大约300毫秒),每隔一段时间,最新请求就会变回空。也就是说,数据将是“未定义的”。为什么会这样?
答案 0 :(得分:1)
这似乎是1.4中引入的jQuery bug:当手动中止ajax调用时,jQuery将使用空字符串而不是错误函数调用success函数。
您可以通过查看回调中的xhr.status
来解决此问题:
function(data, textStatus, xhr) {
if (xhr.status) {
//a successful call
}
else {
//an aborted call
}
}