2

对的人,我发现的所有自动完成插件和功能,它们只会在按键/按键等时更新。这很好,但是只有在用户停止输入并且如果他们正在输入短语或单词时,搜索才开始发生,脚本无法立即开始建议等。

我知道这对你们中的一些人来说是一个非常简单的修复或建议,所以任何帮助将不胜感激,因为我可以在按下一个键时立即将其转换为。

所需效果的一个示例是 Google Suggest 或 Facebook 搜索,每次按键或更改都会立即触发搜索,我该如何模拟呢?

谢谢!

4

3 回答 3

2

你是这个意思吗?还是您希望 Ajax 从数据库中检索?

var data = "Core Selectors Attributes Traversing Manipulation CSS Events Effects Ajax Utilities".split(" ");
    $("#example").autocomplete(data);

jQuery

编辑:我不确定我明白你的意思,因为这个例子似乎与谷歌建议或 Facebook 相同。如果您的数据库很小,您可以在页面加载时将缓存下载到可变数据中。如果您的数据库稍大,您将缓存限制为每个字母字符或字符系列的响应数为 X。(即 WHERE city LIKE 'aa%' LIMIT 10 AND WHERE ...)

于 2010-03-20T16:01:57.497 回答
1

Wicket Web 框架具有“节流”行为的概念。通常,Wicket 应用程序中的 AJAX 请求会根据“ajax 通道”排队,如果没有请求正在运行,它会立即触发请求。如果一个请求已经在运行,则下一个请求将排队,并在当前请求返回时触发。

“节流”让行为本身延迟一段时间(例如,两秒)。如果该行为在同一时期再次触发,则最近行为的回调将替换当前排队行为的回调。(例如,用户开始输入“albuquerque”,触发事件“A”,然后是“AL”,然后是“ALB”。系统可能会触发“A”,然后是“ALB”,跳过“AL”,因为它是坐在队列中时被“ALB”取代。)这样做的目的是在每次按键时立即触发一个行为,但防止服务器被不必要的请求淹没。

查看 wicket ajax 源代码: https ://github.com/apache/wicket/blob/wicket-1.4.8/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js

有关 Web 框架的更多信息,请参阅: http ://wicket.apache.org

于 2010-03-20T16:07:44.750 回答
1

这取决于您搜索的空间有多大以及您的服务器有多好。Facebook 搜索(我假设是人名)很快,因为您实际上只搜索了一千个左右的联系人。谷歌速度很快,因为他们在基础设施上投入了大量资金并缓存了大量响应。

在我的一个项目中,我使用了这个jQuery 插件,它在缓存结果方面提供了出色的性能。我们使用它在大约 6K 联系人(姓名等)的列表上提供自动完成功能。这是你的想法吗?

于 2010-03-20T16:15:28.360 回答