2011-07-03 46 views
0

我從服務器未被解析爲本機對象的javascript數組的對象數組?

"[{\"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

不要逃避"。他們是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"}] 
+0

但是在做$ .parseJSON(data)之後它是如何工作的? –

+0

@jason:你使用的是什麼版本的jQuery? – user113716

+0

dw當前版本:v1.6.2 –

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

感謝您指出,但它是複製和粘貼過程中的錯誤。 –

+0

@jason bournem讓服務器發送JSON,如我的答案中所示?如果是這種情況,它應該可以工作,而無需調用任何$ .parseJSON。 –