2011-11-10 31 views
0

我試圖使用jQuery的用戶界面自動完成,我有充分了解如何把它掛起來麻煩。無法理解JSON和jQuery UI的自動完成

在努力看功能,我們出口的用戶名列表中的

["Abbott, Bob", 
"Adams, Jo", etc... 

JSON格式,它是在8K線。我將它保存到一個名爲names.json的文件中。當我建立了我的自動完成,我用下面的:基於jqueryi-ui autocomplete

$("#userName").autocomplete({ 
    source: "names.json" 
}); 

。它說,這:

When a String is used, the Autocomplete plugin expects that string to point to a URL resource that will return JSON data. 

它返回所有8K +名稱,而不是它基於什麼我打字過濾的。我試圖將其更改爲:

$("#userName").autocomplete({ 
    source: "names.json?term=" 
}); 

這並不工作要麼過濾。

我試過在遠程數據源JSONP例如變化,但我似乎無法得到它的工作。

我試圖改變我的JSON文件格式:

[{"value":"Abbot, Bob"}, 
{"value":"Adams, Jo"}, etc... 

但這並沒有進行過濾。

我試着取出引號值。那沒有任何回報。

我試着將它改爲this stackoverflow question的回答中列出的格式,用我的第二個json格式返回item.value,但是沒有對它進行過濾。

我不太清楚我在做什麼錯了,我希望瞭解。謝謝。

回答

0

你的數據源需要動態。

jquery ui自動完成將發送一個請求到您指定的URL,並附上?term=WHATEVER_THE_USER_TYPED。你需要服務器端的東西來處理這個請求,並只返回那個術語的數據。

例如,

$("#userName").autocomplete({ 
    source: "names.php" // php as an example. 
}); 

將導致一個請求:

/names.php?term=abcd 

names.php必須給拉了回來,搜索匹配的數據,並將其返回。

+0

啊,所以實際上的頁面是靜態的就是爲什麼它返回一切的原因是什麼?那麼我需要用一個動作創建json結果,然後在它運行之前用Struts 2連接它。 – Risu

+0

是的,這是正確的。 – BNL