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

将对象数组通过隐藏输入框传递给jQuery时JSON解析报错问题

问题原因

你遇到的JSON解析错误,核心原因是JSON字符串中的双引号与HTML input标签的value属性引号冲突。当你直接把json_encode的结果放到value="..."中时,HTML会将JSON里的第一个双引号视为value属性的结束标记,导致实际传递给JS的内容被截断,变成不完整的JSON片段(比如只拿到[),自然无法解析。

解决方案

以下三种方法都能解决这个问题,按需选择:

方法1:HTML转义JSON字符串

使用PHP的htmlspecialchars函数对json_encode的结果进行转义,把双引号转成HTML实体",避免和value属性的引号冲突:

<input type="hidden" id="tag_filter_list" value="<?php echo htmlspecialchars(json_encode($tag_filter_list), ENT_QUOTES); ?>" />
  • ENT_QUOTES参数会同时转义单引号和双引号,进一步避免潜在的引号冲突问题。

方法2:用textarea替代hidden input

textarea的内容不会受外层引号影响,直接存放原始JSON即可:

<textarea id="tag_filter_list" style="display: none;"><?php echo json_encode($tag_filter_list); ?></textarea>

JS解析代码不变:

var tag_filter_list = JSON.parse($('#tag_filter_list').val());

方法3:直接输出为JS变量

跳过DOM存储环节,直接把JSON作为JS对象字面量输出到页面中,无需JSON.parse:

var tag_filter_list = <?php echo json_encode($tag_filter_list); ?>;

这种方式最简洁,也避免了DOM操作可能带来的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:22:50