我遇到jQuery自动完成问题。我正在使用下面的函数来获取inputACCO_KEY
的结果。
问题是,我没有看到结果 - 但显然有些东西是从函数返回的,因为我看到div下面的自动完成形式 - 但是总是空的。有时它会更长,有时更短(取决于返回的结果数量),但它总是空的。如果我从那个空表中选择一些东西,输入中显示的结果也是空的。
功能:
$("#inputACCO_KEY").autocomplete({
source: function (request, response) {
$.ajax({
method: 'post',
url: "/wsSearchCAMERC/GetCAACCOSearchAll/",
data: {
prefixText: $("#inputACCO_KEY").val(),
count: 30
},
dataType: 'json',
success: function (data) {
response($(data).map(function (item, i) {
return {
label: item.First,
value: item.Second
};
})
);
},
error: function (data) {
alert('error');
}
});
},
minLength: 3,
select: function (event, ui) {
log("Selected: " + ui.item.value + " aka " + ui.item.id);
}
});
});
结果类型为:
["{"First":"BOŠTJA S.P.","Second":"160001670"}",
"{"First":"GOLF KLUB","Second":"110001615"}", "{"First":"IRENA","Second":"150001322"}"]
答案 0 :(得分:1)
结果类型为:
[“{”First“:”BOŠTJASP。“,”Second“:”160001670“}”, “{”First“:”GOLF KLUB“,”Second“:”110001615“}”,“{”First“:”IRENA“,”Second“:”150001322“}”]
这听起来很奇怪。我假设内部字符串分隔符已转义,因此您有一个字符串数组。 如果是这种情况,您需要将地图功能更改为:
var data = ["{\"First\":\"BOŠTJA S.P.\",\"Second\":\"160001670\"}", "{\"First\":\"GOLF KLUB\",\"Second\":\"110001615\"}", "{\"First\":\"IRENA\",\"Second\":\"150001322\"}"];
var result = $(data).map(function (idx, ele) {
var item = JSON.parse(ele);
return {
label: item.First,
value: item.Second
};
});
console.log(result);
$( "#tags" ).autocomplete({
source: function (request, response) {
var data = ["{\"First\":\"BOŠTJA S.P.\",\"Second\":\"160001670\"}", "{\"First\":\"GOLF KLUB\",\"Second\":\"110001615\"}", "{\"First\":\"IRENA\",\"Second\":\"150001322\"}"];
response($(data).map(function (idx, ele) {
var item = JSON.parse(ele);
return {
label: item.First,
value: item.Second
};
}));
}
});
<link href="https://code.jquery.com/ui/1.12.0/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
</div>
答案 1 :(得分:1)
Select方法必须返回false。否则,它不会像预期的那样工作。
完整的工作示例:
$.ajax.restore();