2012-11-20 147 views
1

我有這樣的JSON數組:jQueryUI的自動完成不了解JSON?

[ 
    {"name":"Mario Kart Wii"}, 
    {"name":"Super Mario Galaxy 2"}, 
    {"name":"Super Mario Galaxy"}, 
    {"name":"Mario Sports Mix"}, 
    {"name":"Mario & Sonic at the Olympic Winter Games"} 
] 

差不多簡單。

我的jQuery代碼:

​​

我的問題是 - 當JSON更簡單,如:

[ 
    "Mario Kart Wii", 
    "Super Mario Galaxy 2", 
    "Super Mario Galaxy", 
    "Mario Sports Mix", 
    "Mario & Sonic at the Olympic Winter Games" 
] 

它的偉大工程。但如果它更像第一個,它沒有得到任何結果。我需要保持它像第一個一樣,因爲我希望以後每個數組中都有更多的元素。

+0

我不遵循關於「我希望以後每個數組中都有更多元素」的評論。您可以根據需要擁有儘可能多的數組元素,只需根據可接受的格式將其鍵入(或不使用鍵即可)。 –

回答

3

對於jQuery UI自動完成,只有兩種可接受的數據格式。

['item', 'item2', 'item3', ...] 
[{label: 'item', value: 'itemvalue'}, {label: 'item2', value: 'itemvalue2'}, ... ] 
+1

這些是2種格式,但它允許您添加額外的特性,如果您需要 - 我通常添加「ID」和「標籤」和「值」 –

+1

'[{標號:「項目」}]沿'和'[{值:「值」}]'也有效,在兩種情況下,一個將被用於兩者,就像在數組唯一版本中一樣。 –

+0

@KevinB和斯科特 - 好想法。這些格式實際上並未反映在官方文件中。 –

1

如果它是一個對象數組,它必須至少具有值和/或標籤屬性。 source

[ 
    {"value":"Mario Kart Wii"}, 
    {"value":"Super Mario Galaxy 2"}, 
    {"value":"Super Mario Galaxy"}, 
    {"value":"Mario Sports Mix"}, 
    {"value":"Mario & Sonic at the Olympic Winter Games"} 
] 

如果這不是一個選項,您可以使用$.map來修復它。

$.getJSON('/index.php/search/autocomplete/'+request['term'],function(data){ 
    response($.map(data,function(obj) { 
     return obj.name; 
    })); 
}); 
+0

我認爲$ .parseJSON也可以工作 –

+0

它應該已經是json,因爲他使用'$ .getJSON' –

+0

是的,我沒有看到 –