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