本文讲解如何正确使用php的json_encode()将多维数组转为json字符串,并通过html隐藏字段安全传递给前端javascript,避免因双引号冲突导致json.parse()解析失败的问题。
在Web开发中,常需将后端生成的结构化数据(如对象数组)传递至前端JavaScript进行动态处理。一个常见做法是借助承载JSON字符串,再由jQuery读取并解析。但直接使用json_encode()输出到value属性中极易引发语法错误——原因在于:HTML属性值本身以双引号(或单引号)界定,而JSON字符串内部也大量使用双引号,导致HTML解析提前截断内容。
例如,PHP代码:
<input type="hidden" id="tag_filter_list" value="" />
若$tag_filter_list编码后为 {“project28″:”deer browse”},实际渲染的HTML将变为:
此时浏览器仅将第一个”之后、下一个”之前的内容(即 {)识别为value属性值,后续字符被当作非法HTML标记丢弃。因此$(‘#tag_filter_list’).val()只返回”{,JSON.parse()自然抛出 SyntaxError: Expected property name or ‘}’。
立即学习“前端免费学习笔记(深入)”;