Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正确解析ajax响应_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 正确解析ajax响应

Javascript 正确解析ajax响应,javascript,jquery,ajax,Javascript,Jquery,Ajax,我使用Ajax从服务器获取数据 从firebug返回的数据: {"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: Unexpe

我使用Ajax从服务器获取数据

从firebug返回的数据:

{"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 )

有什么帮助吗?

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

$.post('server.php', function(data){
    var users = eval('('+data+')').users;
    alert(users[0].name);
});
我不明白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请求中,以便对其进行正确解析。

请不要使用eval-它是

相反,只需使用json参数即可

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

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

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

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

你在没有评估的情况下试过了?这是邪恶的,无论如何都不应该被使用!只是数据。用户[0]。名称我绝对不建议这样做。只需传递json作为最后一个参数,数据将是一个对象。Prototype的evalJSON和JQuery的parseJSON都使用eval…@skafandri JQuery的parseJSON将首先尝试使用本机浏览器函数,如果它不存在,则在解析它之前会确保字符串有效。检查jQuery源代码,并搜索parseJSON:要接受的错误解决方案!它是有效的,但用锤子打开窗口也是有效的。您使用的是mootools而不是jQuery。@AntonioLaguna问题不在于mootools,因为他的JDFIDLE只使用本机javascript。问题是他使用的是字符串而不是对象。这是正确的JS: