我有这个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"
]
效果很好。但如果它更像是第一个,它就不会得到任何结果。我需要保持它像第一个,因为我想在以后的每个数组中有更多的元素。
答案 0 :(得分:3)
对于jQuery UI自动完成,只有两种可接受的数据格式。
['item', 'item2', 'item3', ...]
[{label: 'item', value: 'itemvalue'}, {label: 'item2', value: 'itemvalue2'}, ... ]
答案 1 :(得分: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;
}) );
});