无法弄清楚为什么这不起作用:
$('#add').live('click',function(){
var searchdata = 'id=vendor' + '&location=' + $('#locationname').text() ;
$.get('functions', searchdata, function(data){
var source = $.parseJSON(data);
$("#vendorselect").autocomplete({
source: source
});
});
});
$.get
只返回一个JSON数据,如下所示
[{"值":" 2""标签":" A"},{"值&#34 ;:" 2""标签":" B"}]
最终这起作用了:
$.ajax({
url: "functions",
type: "get",
data: 'id=vendor' + '&location=' + $('#locationname').text() ,
dataType: "json",
success: function( data ) {
vendor = $.map(data, function( val, i ) {
return {
label: val.vendor_ID,
value: val.vendor
};});
$("#autocomplete").autocomplete({
source: vendor
});
}
});
答案 0 :(得分:0)
source
函数传递了两个参数(request, response)
。 request
是用户键入的内容,response
是回调函数。
您的return
没有,因为它在AJAX调用中。您无法从AJAX调用返回,因为它们是异步。
您需要做的是,调用与AJAX调用中的数据一起传递的response
函数。试试这个:
$("#vendorselect").autocomplete({
source: function(request, response){
var searchdata = 'id=vendor';
$.getJSON('functions', searchdata, response);
}
});
注意:$.getJSON
会为您致电$.parseJSON
。
更新:您的JSON响应必须是自动填充所需的格式:
[{"label":"A","value":"2"},{"label":"B","value":"3"}]
查看文档:{{3}}