0

我使用 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 )

有什么帮助吗?

4

4 回答 4

10

请不要使用 eval - 这是邪恶的

相反,只需使用“json”参数。

$.post('server.php', function(data) {
    alert(data.users[0].name);
}, "json");

如果您的标头是正确的,您甚至不需要 json 参数,但它会强制 jQuery 接收并将其解析为 JSON。

于 2012-06-06T11:22:29.393 回答
1

用单引号对括号中的数据进行编码

 $.post('server.php', function(data){
        var users = eval('('+data+')');
        alert(users[0].name);
    });
于 2012-06-06T11:22:33.393 回答
0

您必须用括号括起来 json 字符串

$.post('server.php', function(data){
    var users = eval('('+data+')').users;
    alert(users[0].name);
});

演示

于 2012-06-06T11:17:53.267 回答
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);
});

看看这个演示

最好将它添加dataType: "json"到您的 ajax 请求中,以便正确解析。

于 2012-06-06T11:19:23.123 回答