正确解析ajax响应

时间:2012-06-06 11:15:58

标签: javascript jquery ajax

我使用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 个答案:

答案 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);
});

DEMO

答案 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请求中,以便正确解析。