我正在尝试使用jQuery中的Autocomplete插件,允许用户使用文本字段快速搜索某个人的姓名并返回他们的Facebook用户ID。 Facebook提供的JSON就是这样的:
{
"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对象然后搜索该对象,那将非常感谢! :)
非常感谢
答案 0 :(得分:2)
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);
}
数组name
和id
将包含从JSON中获取的所有名称和ID,并且会创建新数组中的所有值...这就是一种方式......另一种方式是你可以保存变量jsonval
中返回的JSON,然后每次使用用于将值推送到数组的for循环进行搜索...
答案 1 :(得分:0)
我认为你最好每次都调用fb json,因为搜索之间可能会发生变化。如果你在加载时调用了ajsx,你就可以在这样的开头设置一个var
searchdata = "";
然后一旦你的ajax调用完成并且你得到你的json数据就把变量设置为dataresult bobs你的叔叔
searchdat = jsonresult;
有意义吗?
答案 2 :(得分: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;
}