jquery ui autocomplete undefined

时间:2016-07-02 07:56:01

标签: javascript jquery jquery-ui autocomplete

$(function() {
    $("#restaurant_name_search").autocomplete({
        source: function(d, e) {
            $.ajax({
                type: 'GET',
                url: api_url + 'searchrestuarant/' + encodeURIComponent(d.term),
                success: function(b) {
                    var c = [];
                    b = JSON.parse(b);
                    $.each(b, function(i) {
                        i.label = i.Restaurant_Name;
                        c.push(i);
                    });
                    e(c);
                }
            })
        },
        select: function(a, b) {
            console.log(b);.
        }
    }).data("ui-autocomplete")._renderItem = function(ul, item) {
        return $("<li></li>")
            .data("item.autocomplete", item)
            .append("<a>" + item.label + "</a>") // <---
            .appendTo(ul);
    };
});

这是我的jquery ui电话。

json输出如下:

[{
    "Restaurant_Key": "1",
    "Restaurant_Name": "Altitude Espresso",
    "Email": "",
    "Phone_1": "",
    "Local_Restaurant_Key": "1",
    "Address_Line1": "163 Oriordian Street",
    "City": "Mascot"
}]

但是自动完成显示未定义。

输出是从网址收到的。

1 个答案:

答案 0 :(得分:0)

$.each的第一个参数是索引,所以你的代码应该是:

 var c = [];
 b = JSON.parse(b);
 $.each(b, function(index, item) {
   item.label = item.Restaurant_Name;
   c.push(item);
 });

但是,不是手动创建数组并改变原始对象,而是可以更好地使用$.map

var c = $.map(b, function(item, index) {
   return {label : item.Restaurant_Name};
});

在这种情况下,参数的顺序就是你所期望的。