未被解析为本机对象的javascript数组的对象数组?

时间:2011-07-03 14:28:07

标签: 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\":\"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 
    }
    });

2 个答案:

答案 0 :(得分:2)

不要逃避"。它们是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"}]

答案 1 :(得分:0)

在ajaxSetup方法中设置dataType时有一个逗号逗号:

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"}]