我正在使用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”。
由于
答案 0 :(得分:2)
保留引号,它应该有效:
var json_string = <?php echo $json_string; ?>;
json_encode
返回的字符串已经是一个有效的JavaScript表达式,因此不需要任何进一步的声明。