You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决PHP向JavaScript传递JSON时的特殊字符转义与语法错误问题?

解决JS解析JSON时的Unexpected Identifier语法错误

这个问题的核心是你输出的JSON字符串在JS里存在引号冲突,导致解析失败。咱们一步步拆解问题和解决办法:

错误原因分析

你当前的代码输出后得到:

var data = "[{"Mamma":["Papa"]}]";

JS解析时,会把第一个"之后的[当成字符串内容,但紧接着的"Mamma"里的"会被认为是字符串的结束标记,后面的Mamma就成了无意义的标识符,直接触发Uncaught SyntaxError: Unexpected identifier错误。

两种可行的解决方案

方案1:让PHP直接输出合法的JS对象(推荐)

先把存储的转义JSON解码,再转成JS能直接识别的对象格式:

<?php
// 获取存储的转义JSON
$jsonTable = usp_get_meta(false, 'usp-custom-12');
// 解码HTML实体,得到原始JSON字符串
$decodedJson = htmlspecialchars_decode($jsonTable);
// 把JSON转成PHP数组/对象,再用json_encode输出合法的JS格式
$jsCompatibleData = json_decode($decodedJson, true);
?>
var data = <?php echo json_encode($jsCompatibleData); ?>;

这样最终输出的代码会是:

var data = [{"Mamma":["Papa"]}];

这是完全合法的JS对象,不需要额外解析,直接就能使用。

方案2:在JS中用JSON.parse解析(适合需要保留字符串场景)

如果必须先拿到JSON字符串再解析,要确保字符串里的引号被正确转义:

<?php
$jsonTable = usp_get_meta(false, 'usp-custom-12');
$decodedJson = htmlspecialchars_decode($jsonTable);
// 转义字符串中的双引号,避免JS解析冲突
$escapedJson = addslashes($decodedJson);
?>
var data = JSON.parse('<?php echo $escapedJson; ?>');

最终输出的代码是:

var data = JSON.parse('[{"Mamma":["Papa"]}]');

JS会正确识别这个字符串并解析成对象。

内容的提问来源于stack exchange,提问作者rob.m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:14:28