2011-04-08 48 views
1

我試圖在jQuery中使用自動完成插件來允許用戶使用文本字段快速搜索某人的姓名並返回他們的Facebook用戶ID。它是Facebook提供的JSON是沿着這些線路:從JSON數組複製數據到JS對象的jQuery自動完成

{ 
    "data":[ 
     { 
     "name":"Emma Alexander", 
     "id":"8110855" 
     }, 
     { 
     "name":"Dave Suckow", 
     "id":"19546358" 
     }, 
     { 
     "name":"Jessica Willits", 
     "id":"45734687" 
     } 
    ] 
} 

然而,我想要做本地搜索,而不是每次檢索Facebook的JSON,所以我想我需要複製所有的名字和ID到一個本地的JavaScript對象中(我認爲這是實現它的最好方法?),然後使用jQuery來搜索這些名稱。當用戶從文本字段中選擇一個名稱時,它會調用另一個函數並將所選人員的Facebook ID傳遞給它。

但是,我不確定這是最好的方式,還是我真的會如何去實現它。

如果有人可以提供一些小代碼示例,特別是將數據從Facebook的JSON複製到本地Javascript對象,然後搜索該對象,將會受到大量讚賞! :)

非常感謝

回答

2

Hmm..You可以做這樣的事情...

var jsonval= 
({ 
    "data":[ 
     { 
     "name":"Emma Alexander", 
     "id":"8110855" 
     }, 
     { 
     "name":"Dave Suckow", 
     "id":"19546358" 
     }, 
     { 
     "name":"Jessica Willits", 
     "id":"45734687" 
     } 
    ] 
}) 


var name=new Array(); 
var id=new Array(); 
for(var i=0;i<jsonval.data.length;i++){ 
name.push(jsonval.data[i].name); 
id.push(jsonval.data[i].id); 

} 

nameid將包含從JSON和searh獲取的所有名稱和ID的數組創建新數組中的所有值......這就是一種方法......另一種方法是,您可以將變量jsonval中返回的JSON保存,然後每次使用用於將值推入數組的值的for循環搜索。 ..

0

我覺得你最好每次都調用fb json,因爲搜索之間可能會發生變化。是說,如果你做負載的ajsx電話你可以只在這樣

searchdata = ""; 

然後開始時設置一個變種,一旦你的Ajax調用時,你會得到你的JSON數據只設置變量爲dataresult鮑勃你叔叔

searchdat = jsonresult; 

有意義嗎?

0

未經測試,但以下函數接受搜索字符串和數據對象並在名稱字段中搜索,並返回用戶的id;如果未找到匹配項,則返回null。

function searchUser(search, data) { 
    var matchedUser = null; 
    $.each(data, function() { 
     if (this.name.indexOf(search) !== -1) { 
      matchedUser = this; 
     } 
    }); 
    return matchedUser && matchedUser.id; 
}