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

Buffered/delayed ajax requests/keystrokes using JavaScript and JQuery Datatables

本文关键字:延迟 ajax 请求 击键 缓冲 JavaScript JQuery 数据表 使用      更新时间:2023-09-26

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

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

我想知道是否有一种方法可以巧妙地缓冲这些请求。例如,如果用户正在输入"Jonathan",不要发送J, Jo, Jona, Jonath,…如果它们都是在相互限定的时间内输入的,并且只有在输入有足够的间隔时才发送请求,即当末尾的字母n被输入时。

我知道这样做会有一点延迟,但这可能是一个值得的妥协。

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

非常感谢您的意见!

以防有人看到类似的问题:在Spike的评论之后,我检查了数据表插件,上面有我想要的东西:见fnSetFilteringDelay

您可以使用jquery-ui框架的自动完成函数,该函数有一个延迟选项,可以完成您正在寻找的功能。

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