JSON 包含单引号导致语法错误

JSON containing single quote causes syntaxerror

所以我有数据需要通过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)?

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

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

或者在您使用 php 时,您可以使用 addslashes 函数

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

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

我在单引号和双引号方面也遇到过同样的问题。 您可以通过更改单引号和双引号轻松解决它。检查下面的例子。

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

$json = json_encode($array);        

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