通过ajax自动完成

问题描述:

我想使用自动完成来提示结果。我需要在每次击键时发送AJAX请求。为此,我想让HTTP连接保持打开状态几秒钟,如果在该时间段内输入了某些内容,我想在同一连接中发送AJAX。如果在此期间没有输入任何内容,我想关闭HTTP连接。通过ajax自动完成

背景:

我已经使用typewatch插件。但是这里每次发送请求时都会建立HTTP连接。我仍然想提高速度。我在这个线程读到http://www.philwhln.com/quoras-technology-examined#the-search-box即:

Quora使用持久连接。 A 当您开始键入 搜索查询时,将建立与服务器的HTTP连接 。

如何通过跨浏览器支持来做到这一点?它只是保持活力?

+0

很多他们在本文中讨论的是他们如何加快他们的服务器端结果。他们继续说,输入9个字符会产生9个请求,而持久连接在速度方面没有什么区别,只是在连接数量方面。也许你应该尝试减少你的typewatch延迟30-50毫秒,或完全删除它,因为typewatch的目的是减少请求的数量,而不是更快地自动完成。 – Soviut 2011-02-08 00:37:21

你不能。每个请求 - 响应往返都是异步的,这意味着它在发送时等待特定请求的响应返回,然后处理它。

我想你想要做的是防止你的脚本锤击服务器。要做到这一点,有各种方法,但最常见的是使用按键计时器。计时器在用户完成打字之后等待指定的毫秒数,然后将包含文本框值的请求发送到服务器。

如果您使用JQuery,则可以使用TypeWatch插件来执行此操作。 JQuery也将满足您的跨浏览器要求。

然而,因为你也想这样做自动完成,你不妨使用JQuery的AutoComplete插件,它也内置了一个按键计时器,默认情况下它被设置为400个millseconds。点击OPTIONS TAB on this page查看您可以传入插件的所有配置选项。

+0

编辑了这个问题。 – Sabya 2011-02-07 10:08:40