javascript - 请求在竞争条件下定期返回空

标签 javascript jquery autocomplete

导致以下情况的可能原因是什么?

我正在使用带有以下代码的自动完成脚本:

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/

相关文章:

Javascript改变图片

javascript - 三元运算符条件永远不为真,尝试多行ajax请求

javascript - Canvas 坐标基础上的 JQuery 工具提示

php - 如何采用 jquery 自动完成值而不是标签?如果我添加依赖项自动完成,请指导我?

html - 当我将鼠标悬停在 chrome 中的自动完成元素上时,如何禁用输入标签的样式更改?

javascript - 如何使用 JQuery 将数据从一个 HTML 页面传递到另一个 HTML 页面?

javascript - 将数据追加到一个数组中,而不是使用多嵌套数组

javascript - QUnit测试ajax成功函数

jquery - 使用 jQuery 运行选项卡时出错?

intellij-idea - Intellij-for循环的类型是否具有自动完成功能?