我正在尝试设置我的Jquery UI自动完成字段,以便从ajax连接获取数据。 迄今为止,这是我的代码:
$("#mainIngredientAutoComplete").autocomplete({
source: function (request, response) {
$.ajax({
url: "../api/IngredientChoices",
dataType: "json",
success: function (data) {
response(function (item) {
return {
label: item.MainName,
value: item.MainItemID
}
});
}
});
}
});
这是我的 JSON:
[{"SubItemID":1,"MainItemID":1,"SubName":"2%","MainName":"Milk"},{"SubItemID":2,"MainItemID":1,"SubName":"Skim/Fat Free","MainName":"Milk"},{"SubItemID":3,"MainItemID":2,"SubName":"Chedder","MainName":"Cheese"}]
HTML:
<table id="tbl_ingredients" style="padding:0px;">
<tr id="ingHeader">
<td>Ingredient</td>
<td>Measurement</td>
<td>Amount</td>
<td><input id="mainIngredientAutoComplete" /></td>
<td></td>
</tr>
</table>
当我开始输入“mil”(代表牛奶)时,我的代码出现了这个错误:编辑:
我进行了你的更改,它在几次尝试中起作用,但现在我遇到了新的错误 -
在[URL]的第55行第25列未处理的异常
0x800a1391 - Microsoft JScript 运行时错误:'data' 未定义。
$("#mainIngredientAutoComplete").autocomplete({
source: function (request, response) {
$.ajax({
url: "../api/IngredientChoices",
dataType: "json",
response: ($.map(data, function(v,i){
return {
label: v.MainName,
value: v.MainItemID
}}))
});
}
});
$.map
来代替手动将项目推入新数组。 - Andrew Whitakerrequest.term
数据发送到服务器并在那里进行过滤,否则我们可能会传输大量未使用的数据从而影响响应时间。 - Arun P Johny