PHP传递JSON到JavaScript报错:JSON.parse语法错误排查
问题原因及解决方法
错误根源
你的代码核心错误在于对json_encode的作用理解有误:json_encode处理PHP数组后,生成的是符合JavaScript字面量规范的JSON字符串(比如["John","Mary","Peter","Sally"]),但你却额外用JSON.parse()去解析它。
当PHP渲染输出时,$myTest会被直接替换为JSON内容,最终生成的JavaScript代码是:
const displayExternalUrl = JSON.parse(["John","Mary","Peter","Sally"]);
JSON.parse()要求参数必须是JSON格式的字符串,但这里传入的是一个JavaScript数组字面量,不符合参数要求,因此抛出语法错误。
修复方案
直接去掉JSON.parse(),将$myTest的值直接赋值给JavaScript变量即可:
$testArray = array("John", "Mary", "Peter", "Sally"); $myTest = json_encode($testArray); $javascript = " <script> const displayExternalUrl = $myTest; console.log(displayExternalUrl); </script> "; echo $javascript;
如果非要使用JSON.parse()(完全没必要,仅作演示),需要将$myTest用引号包裹,让它成为JavaScript字符串:
$javascript = " <script> const displayExternalUrl = JSON.parse('$myTest'); console.log(displayExternalUrl); </script> ";
不过这种方式存在转义风险,远不如直接赋值简洁安全。
内容的提问来源于stack exchange,提问作者dhany saguntoro
相关产品推荐
相关产品推荐

