2014-07-19 24 views
0

我正在使用Python Django編寫的應用程序。有一個頁面包含一個搜索框,它接受來自用戶的文本輸入,當輸入長度大於或等於2時,它會對外部API執行ajax調用。 例如,假設我輸入'ka',它將使用參數'ka'對該API執行ajax調用,並返回具有該前綴的20個字符串。再次,如果我輸入'kar',它將再次與'kar'進行ajax調用並返回20個字符串,其前綴爲'kar'刪除搜索框中的多個外部API調用自動完成

如果我沒有指定我想要的匹配數,我要調用的API可以返回帶有前綴的所有字符串。所以我希望將第一個ajax調用的響應保存在某個地方,以便在連續按相同前綴的按鍵時,不會再對該外部API執行更多的Ajax調用。

回答

0

我不認爲開箱即可,但您可以使用http://api.jqueryui.com/autocomplete/#option-source自己輕鬆實現它。

您可以提供自己的函數作爲源,只有當它沒有響應從先前請求之一緩存的響應時纔會執行AJAX請求。

+0

但我不認爲只有緩存纔會有幫助,因爲對於不同的前綴,會出現不同的字符串集合,比如當我輸入'kar'時,它不應該在autosuggest下拉列表中給我任何帶有前綴'kab'的字符串。如果我錯了,請糾正。 – Joy

+0

你可以緩存對'ka'的所有響應,並且當你搜索'kar'時,在緩存中做一個循環,只選擇以'kar'開頭的東西。如果你遇到了麻煩,我相信你可以使用http://en.wikipedia.org/wiki/Trie加快它的速度。但是如果讓我們說'ka'有幾百個,它應該足夠快。你可以通過第一個字母進行緩存,然後通過其餘的循環進行緩存......但是如果你想要最高速度,trie會是你的選擇 – Paladin