无法将JSON数据传递给自动完成

时间:2014-12-08 17:29:37

标签: jquery json

无法弄清楚为什么这不起作用:

$('#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
                        });
                    }

    });

1 个答案:

答案 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}}