我使用Ajax从服务器获取数据。
返回的数据(来自萤火虫):
{"users":[{"name":"some name", "age":17},{"name":"some name2", "age":25}]}
当我尝试
时$.post('server.php', function(data){
var users = eval(data).users;
alert(users[0].name);
});
我上了萤火虫:
Uncaught SyntaxError: Unexpected token )
任何帮助?
答案 0 :(得分:10)
请不要使用eval - evil
相反,只需使用“json”参数。
$.post('server.php', function(data) {
alert(data.users[0].name);
}, "json");
如果你的标题是正确的,你甚至不需要json参数,但它强制jQuery想要接收并将其解析为JSON。
答案 1 :(得分:1)
使用单引号将数据编码在括号中
$.post('server.php', function(data){
var users = eval('('+data+')');
alert(users[0].name);
});
答案 2 :(得分:0)
你必须用括号
包围json字符串$.post('server.php', function(data){
var users = eval('('+data+')').users;
alert(users[0].name);
});
答案 3 :(得分:0)
我不明白eval()
,但也许我不太了解这个功能......
通过这项工作:
var data = {"users":[{"name":"some name", "age":17},{"name":"some name2", "age":25}]};
alert(data.users[0].name);
你也可以循环:
$.each(data.users, function (i, user_obj){
alert(user_obj.name);
});
看看this demo。
最好将dataType: "json"
添加到您的ajax请求中,以便正确解析。