我有这个PHP代码,动态构建一个JSON字符串并写入一个javascript字符串:
<?
$s = json_encode(array("id" => "1", "name" => 'myn"ame'));
?>
<script>
<?echo ("var js = '".$s."';");?>
var obj = $.parseJSON( js );
</script>
JSON字符串看起来很好(“似乎被转义为ok):
var js = '{"id":"1","name":"myn\"ame"}';
但$ .parsesJSON失败,似乎想要:
var js = '{"id":"1","name":"myn\\"ame"}';
那么我应该如何正确地逃避这种情况呢? (显然我想满足所有控制角色)
答案 0 :(得分:0)
json_encode
会将PHP字符串转义为JavaScript字符串。
<?php
$json = json_encode(array("id" => "1", "name" => 'myn"ame'));
$js_string = json_encode($json);
?>
<script>
var json = <?php echo $js_string; ?>;
var obj = $.parseJSON(json);
</script>
但是,当你可以首先使用原始JSON作为JavaScript文字时,生成一串JSON是毫无意义的。
<?php
$json = json_encode(array("id" => "1", "name" => 'myn"ame'));
?>
<script>
var obj = <?php echo $json; ?>;
</script>