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

如何在JSON中正确嵌入HTML标签 避免转义双引号引发JS语法错误

问题原因

你用PHP生成的原始JSON本身语法完全合规,JSON规范要求字符串内的双引号必须用\"转义,这个写法本身没有问题。报错的核心原因是前端数据输出的逻辑存在漏洞:

  • 你没有直接将JSON文件作为静态数据源返回给FullCalendar加载,反而先把JSON解码为PHP数组,再手动拼接输出到JS代码中,这个过程中转义逻辑完全失效。
  • 举个实际例子:你存储的JSON里description字段值为<img class=\"img-fluid\" ...,PHP执行json_decode之后,会把转义后的\"还原为普通双引号",也就是说你拿到的$val['description']里的HTML属性本身就是用双引号包裹的。
  • 之后你直接把这个值输出到JS的双引号字符串内:description: "<?php echo $val['description']; ?>",最终渲染出的JS代码就变成了description: "<img class="img-fluid" src="xxx.jpg" ...>",外层JS的字符串被HTML内部的双引号提前截断,后面的img-fluid就被识别为意外的标识符,因此抛出Unexpected identifier错误。
  • 你把HTML属性的双引号替换为单引号后恢复正常,只是因为单引号不会和外层JS的双引号产生冲突,属于临时 workaround,并非正规解决方案。
正确解决方案

最优方案:不要手动拼接JS对象

把所有事件数据整理为PHP数组后,直接一次性用json_encode输出给events字段即可,不需要手动编写每个键值对,json_encode会自动处理所有转义逻辑,完全不会出现字符冲突问题:

events: <?php echo json_encode($objs); ?>,

如果你必须手动拼接每个字段

所有输出到JS字符串内的内容都要经过json_encode处理,注意不要额外给输出结果加外层双引号,json_encode输出字符串时会自动带上外层双引号和内部转义:

description: <?php echo json_encode($val['description']); ?>,

JSON嵌入HTML的规范

JSON本身对嵌入HTML没有特殊限制,只要遵循两个原则就不会出问题:

  • 生成JSON时必须使用官方编码函数(比如PHP的json_encode),不要手动拼接JSON字符串,编码函数会自动处理所有需要转义的字符。
  • 不要把JSON解码后的原始内容直接插入到JS代码的字符串中,必须做二次转义,或者直接输出编码后的JSON内容。

内容的提问来源于stack exchange,提问作者john

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:15:05