2014-07-21 181 views
1

我試圖做一個自動完成與遠程源(json),但我不知道我該怎麼做才能使它工作。jQueryUI自動完成

我得到這樣的答覆:

{ 
    "status": "ok", 
    "count": 4, 
    "data": [ 
    { 
     "nickname": "Deadly", 
     "id": 501689800 
    }, 
    { 
     "nickname": "Deadly00", 
     "id": 517095041 
    }, 
    { 
     "nickname": "Deadly001", 
     "id": 504471830 
    }, 
    { 
     "nickname": "DeadLy01", 
     "id": 500877077 
    } 
    ] 
} 

腳本我使用:

$(function() { 
    var cache = {}; 
    $("#search").autocomplete({ 
     minLength: 3, 
     source: function(request, response) { 
        var term = request.term; 
        if (term in cache) { 
         response(cache[term]); 
         return; 
        } 
      $.getJSON("path/to/heaven/" + term, function(data) { 
       cache[term] = data; 
       response(data); 
      }); 
     } 
    }); 
}); 

自動完成顯示 「建議田」,但唯一的內容適量有 「OK」。 我該如何改變它,以便顯示暱稱?

+0

'響應(數據)使用'應該是'響應($。map(data.data,function(e){return e.nickname}))'。注意'data.data',傳入的'data'是整個對象(如你的問題的回答中所描述的),這個對象有'data'屬性。 –

回答

1

而不是響應(數據),請嘗試下面的內容。

response($.map(data, function(item) { 
    return { 
     value: item.nickname 
    } 
})) 

在情況下,如果你得到任何錯誤,你可以嘗試this

+0

這會導致建議列表產生適量的結果,但它們都是空的。 – Miku

0

DEMO

你應該像

$("#tags").autocomplete({ 
//source: availableTags 
    source: function(request, response) { 
      var term = request.term; 
      $.getJSON("path/to/heaven/" + term, function(data) { 
       cache[term] = data; 
       //response(data); 
       response($.map(data.data, function(item) { 
       return { 
        value: item.nickname 
       } 
       })); 
      });   

     } 
});