2011-09-05 111 views
3

我目前正在構建一個企業Web應用程序,其中將包括一個快速搜索屏幕。 此屏幕使用JQuery和Datatables提供搜索結果的表格視圖。根據與輸入到文本字段中的字符串的匹配執行搜索。每次按下某個鍵時,都會將新的AJAX請求發送回servlet,執行搜索(跨越大型數據庫),並通過JSON返回結果以在表中進行更新。使用JavaScript和JQuery Datatables緩衝/延遲ajax請求/擊鍵

對數據庫的搜索是一個代價高昂的操作。很多時候,當用戶輸入名稱時,他們會連續輸入大量字母。這會導致在後端觸發多次搜索,有時會不必要地進行。

我想知道是否有巧妙緩衝這些請求的方法。例如,如果用戶輸入「Jonathan」,則不要向J,Jo,Jona,Jonath發送請求,如果他們都是在彼此的時間限制內鍵入的,並且只有在有請求時發送打字時有足夠的空白,即當輸入最後的字母n時。

我知道這會花費一點時間,但它可能是一個值得考慮的妥協。

您認爲這有意義嗎?是否有這種操作的現有模式/庫?它是否會導致我沒有想到的可用性問題?

非常感謝您的意見!

回答

6

以防萬一有人在尋找一個類似的問題:斯派克的評論後,我查了一下數據表的插件和裏面的東西,它正是我想以上:看fnSetFilteringDelay

2

你可以使用jquery-ui框架的自動完成功能,它有一個延遲選項,它完全符合你的要求。

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

+0

謝謝。看到後我意識到我沒有檢查DataTable中是否有類似的東西,並且...是的!我現在要去試試看。 –

+1

哦,對不起,我甚至沒有注意到Datatables處理過濾本身。很高興它指出你在正確的方向! – spike