2012-06-24 56 views
0

我有點卡在這裏,似乎無法讓jQuery自動完成爲我工作。我試圖從JSON文檔拉自動完成。咖啡腳本自動完成與jQuery,JSON和ID變量

IE:

http://REMOTE_HOST/names.json 

這returs類似:

[{"label":"Brian House", "id" : 1}, 
{"label":"Joe Green", "id" : 2}, 
{"label":"Fisher Gennings", "id" : 3}, 
{"label":"Sheila Williams", "id" : 4}, 
{"label":"Brett Nelson", "id" : 5}, 
{"label":"Angie Katz", "id" : 6}, 
{"label":"Zoe Middleton", "id" : 7}, 
{"label":"Parker Jones", "id" : 9}] 

我想要做的是有一個文本字段(user_friend_name)標籤自動完成,然後填充隱藏字段(user_friend_name_id)與身份證。

#user_friend_name 
#user_friend_name_id 

我正在使用的咖啡腳本。

$(document).ready -> 
     $('#user_friend_name').autocomplete 
       source: "http://REMOTE_HOST/names.json" 
       select: (event,ui) -> $("user_friend_name_id").val(ui.item.id) 

現在它看起來像我得到的所有名字的一個JSON拉,但沒有選擇或filetering您鍵入。使用標準數組['foo','food','trees']作爲源似乎工作正常。

回答

0

我相信他們應該有價值而不是id屬性。我不熟悉的咖啡劇本,但我敢肯定,這是清晰的:

$.getJSON("http://REMOTE_HOST/names.json", function(response) { 
    var newData = response.map(function(el) { return {label: el.label, value: el.id }) 
    $('#user_friend_name').autocomplete 
     source: "http://REMOTE_HOST/names.json" 
     select: (event,ui) -> $("user_friend_name_id").val(ui.item.value) 
}) 
1

假設被返回的數據,你在上面顯示,然後ui.item.id是正確的屬性來訪問。

我對你的例子做了一個小提琴。嘗試使用console.log()console.dir()來調試屬性。

http://jsfiddle.net/fMWqU/

如果你仍然沒有運氣,那麼問題可能是您的JSON文件。 確保文檔與您的腳本位於同一個域中,以防止跨源錯誤。 我也注意到過去有一個帶有Windows行結尾的json文檔會導致一些瀏覽器失敗。 嘗試在done()和fail()處理程序中執行常規操作$.ajax()並使用console.dir()

xhr = $.ajax 
    url : 'http://REMOTE_HOST/names.json' 
    dataType : 'json' 

xhr.done -> 
    console.log arguments 

xhr.fail -> 
    console.log 'Fail! ', arguments 
+0

謝謝!我會看一看。 – user41724