2015-07-01 35 views
-1

我想要獲得一個簡單的自動完成功能,以基於第三方應用程序提供的用戶名工作。javascript中的簡單自動完成功能

在常規格式的應用程序輸出數據:

"{ 
"UserA":{"IP":"XXX.XXX.XXX.XXX","ConnectTime":"/Date(1435769694510)/","LastAskSource":"","LastAskType":2,"Name":"UserA"}, 
"UserB":{"IP":"XXX.XXX.XXX.XXX","ConnectTime":"/Date(1435769694510)/","LastAskSource":"","LastAskType":2,"Name":"UserB"}, 
"UserC":{"IP":"XXX.XXX.XXX.XXX","ConnectTime":"/Date(1435769694510)/","LastAskSource":"","LastAskType":2,"Name":"UserC"} 
}" 

現在,我想使用下面列出的一般自動完成功能:

$("#chatEntryBox").autocomplete({ 
    source: usersOnline.Name 
}); 

我已經在陣列定義爲這樣:

OnlineUsers = data.userinfo; 

for (var i in OnlineUsers) { 
    var user = OnlineUsers[i]; 
    usersOnline = $.map(OnlineUsers, function(el) { return el; }) 
} 

現在,上面的這部分按我期望的方式工作。我可以在控制檯上測試數組的值是什麼JSON.stringify(usersOnline[0].Name);

我已經看過Jquery網站上的文檔...我只是覺得我錯過了某些東西或誤解。如果有人能指出我會朝着正確的方向發展,那將是很棒的。

最終目標是輸入用戶名稱的前幾個字母,然後自動完成其餘部分。

+0

隨着價值迴歸,似乎什麼是'json'字符串,嘗試'JSON.parse(數據)',使之與正常的'對象'? – fuyushimoya

+0

我在哪裏可以找到我的代碼?在For循環中? –

+0

當數據從服務返回給您時,請執行以下操作:var response = JSON.parse(data)其中data是從服務返回的數據。這將允許您像正常的JavaScript對象一樣操作json。您將在收到無論何處爲 – jonathanmcdaniel

回答

1

我爲你的問題做了一個小提琴here

循環拿出從JSON名字可以很簡單,因爲這

var usersOnline = $.map(input, function(el) { return el.Name; }) 

$("#chatEntryBox").autocomplete({ 
    source: usersOnline 
}); 
+0

我暗示了你有什麼,但由於某種原因,我現在正在得到一個問題,我的腳本「未捕獲TypeError:無法讀取未定義的屬性」長度「 我也看到從控制檯的變量看undefined。 –

+0

@FrankEdgar你可以分享你的問題的小提琴。 看起來你的源碼數組是由json形成的,有一些問題。 是否將陣列名稱更改爲您的實際變量...可能是因爲您導致未定義錯誤 – levi

+0

此解決方案是正確的。我試圖將JSON字符串傳遞到它的作用域之外,從而爲整個事物添加了一組「」。如果我在它生成的循環中處理它,然後將處理的數組傳遞給我的自動完成功能,它就可以工作。 謝謝先生。 –