json_ encode - JSON.parse()组合,在Firefox中运行良好但在其他浏览器中失败

时间:2009-09-07 16:38:35

标签: php javascript json

我正在使用json_encode(PHP)和JSON.parser(来自json.org的Javascript)的组合将JSON对象从PHP传递到Javascript,JSON对象可能有引号和双引号所以我正在使用addslashes PHP中的()函数。这种组合在Firefox中运行良好,但在Safari,Chrome或Internet Explorer等其他浏览器中运行良好。这是代码:

<?php

   $json =array('n' => count($arrayEx), 'items' => array());

   foreach($arrayEx as $item)
   {
      $json['items'][]=array( 'property1' => addslashes($item['property1']),
                     'property2' =>addslashes($item['property2'])
                            );

   }    

   $json_string = json_encode($json);

?>

<script>    
   var json_string= '<? echo $json_string; ?>'; 
   var json_object = JSON.parse(json_string);   //Fail in this line
</script>

失败并显示错误消息“String literal not ended”。

由于

1 个答案:

答案 0 :(得分:2)

保留引号,它应该有效:

var json_string = <?php echo $json_string; ?>;

json_encode返回的字符串已经是一个有效的JavaScript表达式,因此不需要任何进一步的声明。