包含单引号的JSON会导致syntaxerror

时间:2016-07-13 12:22:06

标签: javascript php json syntax-error

所以我有需要通过php获取的数据。然后应将此数据保存到.php文件中的javascript变量中,以回显值:

$json = json_encode($requirements);
echo "<script>
        var myvar = '<?php echo $json; ?>';
      </script>";

数据包含单引号,在Chrome中出现语法错误:

Uncaught SyntaxError: Unexpected identifier

页面源看起来像错误:

var myvar = '<?php echo {"data":{"data":{"1":{"description":"Don'    t}}}}; ?>';

直到“”Don'“的整个字符串为红色。

保持json_encode失败的正确方法是什么(除了直接将数据调用到js之外)?

3 个答案:

答案 0 :(得分:1)

然后您需要转义'个字符,例如使用反斜杠\

{"data":{"data":{"1":{"description":"Don\'t}}}}

或者当您使用php时,您可以使用addslashes功能

答案 1 :(得分:1)

我也遇到过与Single&amp; amp相同的问题。双引号。 您可以通过更改单个&amp;双引号。请查看以下示例。

$array = array(
         "data" => array("data" => array ("desc" => "don't"))
        );

$json = json_encode($array);        

echo "<script>
        var myvar = ".$json.";
        console.log(myvar);
      </script>";

答案 2 :(得分:0)

你需要转义双引号,试试:

 var myvar = "<?php echo '{\"data\":{\"data\":{\"1\":{\"description\":\"Don\'t}}}}'; ?>";
 alert(myvar)