2016-07-02 205 views
0
$(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調用。jquery ui自動完成undefined

JSON的輸出如下:

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

但總是自動完成顯示未定義。

輸出從url接收。

+0

商品中沒有標籤 – guradio

回答

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}; 
}); 

在這種情況下,參數的順序就是您所期望的。