2016-07-02 11 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); 
    }; 
}); 

Dies ist meine jquery ui Anruf.jquery ui automatische Vervollständigung undefined

Die json Ausgabe lautet wie folgt:

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

Aber immer die automatische Vervollständigung zeigt nicht definiert.

Der Ausgang wird von der URL empfangen.

+0

Kein Etikett im Artikel – guradio

Antwort

0

Das erste Argument von $.each ist der Index, so sollte Ihr Code sein:

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

Aber anstatt manuell die Array-Erstellung und das ursprüngliche Objekt mutiert, können Sie besser nutzen $.map:

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

In diesem Fall ist die Reihenfolge der Argumente, was Sie erwartet haben.