2012-05-27 45 views
2

我有一個PHP數組,我使用_json_encode(..)_打包JSON對象。然後我把它作爲參數發送給JS函數。當我想用Javascript解析對象時,eval(..)沒有任何反應(我猜想窗簾背後有錯誤)。什麼可能是錯的?
代碼:無法從PHP解析JS中的JSON對象json_encode

<script type="text/javascript"> 
    function testFun(inArr) { 
     var obj=eval('('+inArr+')'); 
     alert(obj.m); //alert(obj) also doesnt work 
    } 
</script> 


//PHP 
$spola_array = array('m' => 1, 'z' => 2); 
$json_obj=json_encode($spola_array); 
echo '<script type="text/javascript">testFun('.$json_obj.');</script>'; 

回答

5

它已經被解析,因爲你輸出它作爲對象常量而不是字符串。這將是這樣的:

<script type="text/javascript">testFun({m: 1, z: 2});</script> 

所以在你的函數,它只是:

alert(inArr.m) //1 

你只需要解析它,如果它是一個字符串:此

<script type="text/javascript">testFun('{m: 1, z: 2}');</script> 
+0

非常感謝一。在過去幾個小時內無法弄清楚。 –

+0

沒問題。順便說一句,有時候可以通過console.log來幫助調試這樣的事情。它通常提供比警報更好的格式化輸出。 – Corbin

+0

這個console.log在哪裏?編輯:你的意思是Firebug?我從來沒有使用它,也許我應該開始:) –