Jquery 远程设置自动完成的源
可能重复:Jquery 远程设置自动完成的源,jquery,jquery-ui,Jquery,Jquery Ui,可能重复: 我有一个自动完成,我想挂到我的API返回所有客户帐号。问题是我的API返回一个对象:AccountNumber、InvoiceNumber、Name、Address等。。当我试图将我的来源设置为AccountNumber时,如下所示: $.getJSON('/api/Customers', function(data) { $("#AccountNumber").autocomplete({ source: data.AccountNumber,
我有一个自动完成,我想挂到我的API返回所有客户帐号。问题是我的API返回一个对象:AccountNumber、InvoiceNumber、Name、Address等。。当我试图将我的来源设置为AccountNumber时,如下所示:
$.getJSON('/api/Customers', function(data) {
$("#AccountNumber").autocomplete({
source: data.AccountNumber,
minLength: 4
});
});
我得到了这个错误:
Uncaught TypeError: Property 'source' of object #<Object> is not a function
Uncaught TypeError:对象#的属性“source”不是函数
知道我做错了什么吗?因为回调返回的是一个对象,所以必须提取数据并将其放在一个arary中。只要
data
是帐户对象的数组,就可以尝试以下方法:
$.getJSON('/api/Customers', function(data) {
var acctNums = [];
for(a in data) {
acctNums.push(data[a].AccountNumber);
}
$("#AccountNumber").autocomplete({
source: acctNums,
minLength: 4
});
});
另一种选择是只添加一个只返回客户帐号数组的不同请求路由。这样,您就可以这样传递它:
$.getJSON('/api/Customers/AccountNums', function(data) {
$("#AccountNumber").autocomplete({
source: data,
minLength: 4
});
});
最后,你可以让我来。您需要创建一个不同的请求路由,该路由只为自动完成返回一个JSON对象数组(每个对象包含value
和label
属性)。然后只需使用路由的绝对或相对URL即可获取数据。下面是一个小例子:
$("#AccountNumber").autocomplete({
// This GET Request returns an Array of Objects used for Auto-Complete:
// [ { label: "Choice1", value: "value1" }, ... ]
source: '/api/Customers/AccountNumsAuto',
minLength: 4
});
jQuery UI自动完成的源属性必须是:
- 结果数组:
源:[“string1”、“string2”、“string3”、“string4”]
- 字符串(处理查询的远程PHP页面的url),这将触发对此页面的ajax请求,参数名为
,其中包含搜索值:term
source:“page.PHP”
- 使用两个参数调用的函数
和请求
。第一个包含搜索值(响应
),第二个包含必须用值填充的对象request.term
在您的情况下,您可以将JSon转换为结果数组