要求在竞争条件下定期回来

时间:2010-04-13 14:23:09

标签: javascript jquery autocomplete

以下可能的原因是什么?

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

if (that.currentAjaxRequest !== null) {
    that.currentAjaxRequest.abort();
}

that.currentAjaxRequest = $.get(query_string,
    function(data) {
        that.doStuff(data);
    }
);

脚本受到限制。因此,在发送请求之前,每次击键后都会有大约300毫秒的延迟。

这在我的测试环境中运行良好。但是,我遇到了在实时环境中的情况,在这种情况下,如果请求被发送到彼此附近(大约300毫秒),每隔一段时间,最新请求就会变回空。也就是说,数据将是“未定义的”。为什么会这样?

1 个答案:

答案 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
    }
}