1

私はこの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コード:

$('#searchFieldGame').autocomplete({
        source: function(request, response) {
            console.log(response)
            $.getJSON('/index.php/search/autocomplete/'+request['term'],response)
        },
        select: function(event, ui) {
            $('#searchFieldGame').val(ui.item.value);
            $('#searchFormGame').submit()
        },
        minLength: 3
    })

私の問題は-JSONがより単純な場合です。例:

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

それは素晴らしい働きをします。しかし、それが最初のものに似ている場合、結果は得られません。後ですべての配列にもっと多くの要素が必要なので、最初のものと同じように保つ必要があります。

4

2 に答える 2

3

jQuery UIオートコンプリートの場合、受け入れ可能なデータ形式は2つだけです。

['item', 'item2', 'item3', ...]
[{label: 'item', value: 'itemvalue'}, {label: 'item2', value: 'itemvalue2'}, ... ]
于 2012-11-20T22:17:48.393 に答える
1

オブジェクトの配列の場合は、少なくとも値やラベルのプロパティが必要です。ソース

[
    {"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;
    }) );
});
于 2012-11-20T22:13:45.890 に答える