我在使自动完成工作时遇到问题。
我的自动填充框显示多个结果,与DISTINCT问题无关。
示例:如果我的自动完成显示2个可能的选项,那么它会在自动完成框中显示两次结果 - 即Lungs,Liver然后是Lungs,肝脏。如果有三个可能的自动完成选项,则结果列表重复三次,依此类推。
在Firebug中,我可以看到正在返回正确的Json,结果不会重复。
有谁知道问题是什么,拜托?
此致 熔体
$(document).ready(function () {
$('#search').autocomplete({
source: function (request, response) {
$.ajax({
url: '/home/GetSR',
type: 'GET',
cache: false,
contentType: "application/json; charset=utf-8",
data: { term: request.term },
dataType: 'json',
success: function (json) {
response($.map(json, function (label, value) {
return json;
}));
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert('error - ' + textStatus);
// console.log('error', textStatus, errorThrown);
}
});
},
minLength: 2,
select: function (event, ui) {
// alert('you have selected ' + ui.item.label + ' ID: ' + ui.item.value);
$('#search').val(ui.item.label);
// save the auto complete value id to be used later
setACValue(ui.item.value);
return false;
}
})
});
答案 0 :(得分:0)
success: function (json) {
response($.map(json, function (label, value) {
return json;
}));
},
应该是:
success: function (json) {
response($.map(json, function (label, value) {
return value;
}));
},
每次处理JSON元素数组的元素时,都会返回整个JSON数组,而不是只返回一个元素的值。所以你的$.map
正在返回一个二维数组。
或者,您可以这样做:
success: function (json) {
response(json);
},