使用JavaScript和JQuery数据表缓冲/延迟ajax请求/击键

时间:2011-09-05 14:48:28

标签: javascript jquery ajax httprequest datatables

我目前正在制作一个企业网络应用程序原型,其中包括一个快速搜索屏幕。 此屏幕使用JQuery和Datatables提供搜索结果的表格视图。基于与在文本字段中输入的字符串的匹配来执行搜索。每次按下一个键,一个新的AJAX请求被发送回一个servlet,执行搜索(跨大型数据库),并通过JSON返回结果,以便在表上更新。

对数据库的搜索是一项代价高昂的操作。很多时候,当用户输入一个名字时,他们会快速连续输入一些字母。这将导致在后端触发多次搜索,有时不必要。

我想知道是否有一种巧妙缓冲这些请求的方法。例如,如果用户正在键入“Jonathan”,请不要发送对J,Jo,Jona,Jonath等的请求,如果它们都是在彼此的时间限制内输入,并且仅在有时请发送请求打字时有足够的空白,即输入结尾处的字母n时。

我知道这会花费一点点延迟,但这可能是值得妥协的。

你认为这有道理吗?是否存在此类操作的现有模式/库?它是否会导致我没有想到的可用性问题?

非常感谢您的意见!

2 个答案:

答案 0 :(得分:6)

以防有人看到类似的问题:在Spike发表评论之后,我检查了数据表插件,并且有一些东西完全符合我的要求:见fnSetFilteringDelay

答案 1 :(得分:2)

您可以使用jquery-ui框架的自动完成功能,它具有一个延迟选项,可以完全满足您的需求。

http://jqueryui.com/demos/autocomplete/#option-delay