jQuery自动完成请求缓存问题

时间:2010-08-19 02:52:44

标签: jquery jquery-autocomplete

我正在使用deprecated autocomplete plugin(因为我正在使用旧版jquery lib 1.3.2)。

我的问题是自动完成插件尝试缓存请求。我正在使用服务器端URL返回结果。

考虑这种情况:

Keyword : Results
i : ikea, iphone, ipod, ipad, iphone 4
ip: iphone, ipod, ipad, iphone4
iph: iphone, iphone 4
ipho: iphone, iphone 4

...

你看到问题,第一次得到5个结果 - 这是我在后端设置的限制,它只返回5个结果。下一次,它不发送请求,它会优化它在第一次请求中得到的结果集,等等。

如何在每次输入更改时使自动完成插件发送请求?

这是我的代码......

$("#query").autocomplete(
    "/getSuggestions/", {
        autoFill: true,
        selectFirst: false,
        cacheLength: 1
    });

我尝试将cacheLength设置为“1”,但这不起作用。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

$("#query").autocomplete(
    "/getSuggestions/", {
        autoFill: true,
        selectFirst: false,
        cacheLength: 0
    });

事实证明这是一个非常简单的解决方案 - 将cacheLength设置为0可以解决问题。

到目前为止我在documentation中提到的解释......

  

后端查询结果的数量   存储在缓存中。 如果设置为1 (   当前结果),没有缓存   发生即可。必须是> = 1。

无论如何,我得到了理想的解决方案。

答案 1 :(得分:1)

您不需要禁用缓存,可以选择禁用子集匹配,例如

$("#query").autocomplete(
    url,
    {
        matchSubset: false
    }
)