在jquery" this.source的自动完成功能中获取错误不是一个函数。"

时间:2015-07-01 08:38:51

标签: javascript jquery ajax json asp.net-ajax

我的代码是:

        $.ajax({
            type: "GET",
            url: "https://url.com",
            dataType: "json",
            success: function (data) {

                //$("#id").autocomplete({ source: response });
                $("#search").autocomplete(
           {
               source: data,
               select: function (event, ui) {
                   $("#search").val(ui.item.FirstName + " / " + ui.item.LastName);
                   return false;
               }
           }).data("autocomplete")._renderItem = function (ul, item) {
               return $("<li></li>")
                   .data("item.autocomplete", item)
                   .append("<a><strong>" + item.FirstName + "</strong> / " + item.LastName + "</a>")
                   .appendTo(ul);
           };
            }
        });

网址中的数据是表格中的数据 {{Data:Array [22],Id:null,Result:Object}

我想使用格式为

的Array的FirstName和LastName
{FirstNam:R , LAstName:e , Id:9 },{FirstNam:R , LAstName:e , Id:9},...

我也尝试了这个

$.getJSON("https://url.com", function (json) {
                console.log(json);    

            });

但这也会产生同样的错误。

任何帮助??

我也试过这个

  $("#search").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "https://url.com",
                dataType: "json",
                data: { term: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                         return {
                            label: item.FirstName,
                            id: item.LastName 

                        };
                    }));
                }
            });
        },
        minLength: 2,
        select: function (event, ui) {
            $('#search').val(ui.item.label);
                      }
    });

这甚至没有工作

1 个答案:

答案 0 :(得分:0)

尝试data.d作为来源。 像这样:

$("#search").autocomplete({
   source: data.d,
});

只是data是一个对象,但是data.d使它成为一个可读的字符串或类似的东西。

另外,你不应该使用success函数,因为自1.8以来它已被jQuery弃用,而是使用它:

$.ajax({
  type: "GET",
  url: "https://url.com",
  dataType: "json"
}).done(function(data){
  console.log(data.d);
});