【问题标题】:autocomplete through ajax通过ajax自动完成
【发布时间】:2011-02-07 18:04:32
【问题描述】:

我想建议使用自动完成的结果。我需要在每次击键时发送 AJAX 请求。为此,我想将 HTTP 连接保持打开几秒钟,如果在此期间输入了某些内容,我想在同一连接中发送 AJAX。如果在那段时间没有输入任何内容,我想关闭 HTTP 连接。

背景:

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

Quora 使用持久连接。一个 HTTP连接建立与 开始输入时的服务器 搜索查询。

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

【问题讨论】:

  • 他们在本文中讨论的很多内容是他们如何加快服务器端的结果。他们接着说,输入 9 个字符会导致 9 个请求,持久连接在速度上没有区别,只是在连接数量上。也许你应该尝试将你的 typewatch 延迟减少到 30-50 毫秒,或者完全删除它,因为 typewatch 的目的是减少请求数量,而不是让自动完成更快。

标签: ajax http autocomplete


【解决方案1】:

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

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

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

然而,既然你也想做自动完成,你也可以使用 JQuery AutoComplete 插件,它还内置了一个按键计时器,默认设置为 400 毫秒。单击this page 上的OPTIONS 选项卡,查看您可以传递到插件中的所有配置选项。

【讨论】:

    猜你喜欢
    • 2013-08-28
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    相关资源
    最近更新 更多