2011-02-07 123 views
0

我想使用自動完成來提示結果。我需要在每次擊鍵時發送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

回答

0

你不能。每個請求 - 響應往返都是異步的,這意味着它在發送時等待特定請求的響應返回,然後處理它。

我想你想要做的是防止你的腳本錘擊服務器。要做到這一點,有各種方法,但最常見的是使用按鍵計時器。計時器在用戶完成打字之後等待指定的毫秒數,然後將包含文本框值的請求發送到服務器。

如果您使用JQuery,則可以使用TypeWatch插件來執行此操作。 JQuery也將滿足您的跨瀏覽器要求。

然而,因爲你也想這樣做自動完成,你不妨使用JQuery的AutoComplete插件,它也內置了一個按鍵計時器,默認情況下它被設置爲400個millseconds。點擊OPTIONS TAB on this page查看您可以傳入插件的所有配置選項。

+0

編輯了這個問題。 – Sabya 2011-02-07 10:08:40