对象数组未被解析为本机对象的javascript数组?
我正在从服务器接收以下数据对象数组未被解析为本机对象的javascript数组?,javascript,jquery,ajax,json,parsing,Javascript,Jquery,Ajax,Json,Parsing,我正在从服务器接收以下数据 "[{\"role_id\":\"1\",\"name\":\"administrator\",\"created_by_user_id\":\"2\",\"time_created_on\":null,\"is_user_based\":\"0\"},{\"role_id\":\"2\",\"name\":\"manager\",\"created_by_user_id\":null,\"time_created_on\":null,\"is_user_based\
"[{\"role_id\":\"1\",\"name\":\"administrator\",\"created_by_user_id\":\"2\",\"time_created_on\":null,\"is_user_based\":\"0\"},{\"role_id\":\"2\",\"name\":\"manager\",\"created_by_user_id\":null,\"time_created_on\":null,\"is_user_based\":\"0\"}]"
它只是两个对象的数组。即使将“dataType”设置为json,我也不会在成功回调函数中接收本机javascript数组,但如果我使用
$.ajaxSetup({
url:'/public/admin/role/list',
dataType:'json'
});
$.ajax({
success:function(data) {
alert(data[0].name); // alert box pop up as 'undefined '
var data = $.parseJSON(data);
alert(data[0].name) ; //works
}
});
在ajaxSetup方法中设置数据类型时,后面有一个逗号:
dataType:'json',
^
另外,我希望这里显示的JSON中的\
不是服务器实际响应的一部分。响应应如下所示:
[{"role_id":"1","name":"administrator","created_by_user_id":"2","time_created_on":null,"is_user_based":"0"},{"role_id":"2","name":"manager","created_by_user_id":null,"time_created_on":null,"is_user_based":"0"}]
不要逃避“
。它们是JSON解析所必需的
[{"role_id":"1","name":"administrator","created_by_user_id":"2","time_created_on":null,"is_user_based":"0"},{"role_id":"2","name":"manager","created_by_user_id":null,"time_created_on":null,"is_user_based":"0"}]
感谢您指出这一点,但在复制和粘贴过程中这是一个错误。@jason bournem,因此服务器发送JSON,如我的回答所示?如果是这种情况,它应该可以工作,而不需要调用任何$.parseJSON。同时确保没有周围的
”
@jason:您使用的是什么版本的jQuery?@jason-外部引号将其变成字符串,而字符串确实需要内部引号“quoted”。在结果字符串上使用parseJSON
,将字符串解压为对象。您只需要返回对象本身。我怀疑您在服务器端双重引用了引号\\”
,并以“\”开头字符串[…
。去掉开头/结尾的引号,不要在服务器上重复引用,你会没事的。@tvanfosson:你应该发布你的答案。我想你是对的。OP在服务器端对它进行了两次编码。我在控制台中用JSON.stringify(JSON.stringify([{“角色id:”1“,…]);