Jquery 自动完成 returns 结果,但结果未显示任何内容
Jquery autocomplete returns result, but result is not showing anything
我在使用 jQuery 自动完成时遇到问题。我正在使用下面的函数来获取 inputACCO_KEY
的结果。
问题是,我没有看到结果——但显然函数返回了一些东西,因为我在 div 下面看到了自动完成表单——但它总是空的。有时它更长,有时更短(取决于返回多少结果),但它总是空的。如果我 select 来自那个空 table 的东西,输入中显示的结果也是空的。
函数:
$("#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"}"]
Result is of type:
["{"First":"BOŠTJA S.P.","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>
Select 方法必须 return false。否则,它不会像预期的那样工作。
完整的工作示例:
$("#inputACCO_KEY").autocomplete({
source: function (request, response) {
$.ajax({
method: 'post',
url: "/wsSeCAMERC/GetCA/",
data: {
prefixText: $("#inputACCO_KEY").val(),
count: 30
},
dataType: 'json',
success: function (data) {
response($.map(data, function (item, i) {
return {
label: item.cACCO_NME,
value: item.iACCO_KEY
};
})
);
},
error: function (data) {
alert('error!');
}
});
},
minLength: 3,
select: function (event, ui) {
$("#inputACCO_KEY").val(ui.item.label);
$("#iACCO_KEY").val(ui.item.value);
return false;
}
});
});
我在使用 jQuery 自动完成时遇到问题。我正在使用下面的函数来获取 inputACCO_KEY
的结果。
问题是,我没有看到结果——但显然函数返回了一些东西,因为我在 div 下面看到了自动完成表单——但它总是空的。有时它更长,有时更短(取决于返回多少结果),但它总是空的。如果我 select 来自那个空 table 的东西,输入中显示的结果也是空的。
函数:
$("#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"}"]
Result is of type:
["{"First":"BOŠTJA S.P.","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>
Select 方法必须 return false。否则,它不会像预期的那样工作。
完整的工作示例:
$("#inputACCO_KEY").autocomplete({
source: function (request, response) {
$.ajax({
method: 'post',
url: "/wsSeCAMERC/GetCA/",
data: {
prefixText: $("#inputACCO_KEY").val(),
count: 30
},
dataType: 'json',
success: function (data) {
response($.map(data, function (item, i) {
return {
label: item.cACCO_NME,
value: item.iACCO_KEY
};
})
);
},
error: function (data) {
alert('error!');
}
});
},
minLength: 3,
select: function (event, ui) {
$("#inputACCO_KEY").val(ui.item.label);
$("#iACCO_KEY").val(ui.item.value);
return false;
}
});
});