修改食品描述字段为BLOB后出现Unexpected end of JSON input报错如何解决
问题根因
你将食品描述字段改为BLOB后,字段内存储的富文本包含换行、单引号等特殊字符,原有代码中将json_encode的输出套入单引号再用JSON.parse解析的写法,配合stripslashes会破坏JSON结构完整性,导致JSON字符串被截断,所以抛出Unexpected end of JSON input语法错误。之前出现的rn异常是换行符\r\n未被正确转义导致的。
解决方案
1. 核心代码修改
找到这行错误代码:
var categories = JSON.parse('<?php echo stripslashes(json_encode($categories)); ?>');
直接替换为以下写法即可:
var categories = <?php echo json_encode($categories, JSON_UNESCAPED_UNICODE); ?>;
原理:PHP的
json_encode输出的本身就是合法的JS对象字面量,不需要再套单引号用JSON.parse解析,也不需要调用stripslashes处理转义,从根源上避免特殊字符破坏语法结构的问题。
2. 字段类型优化(可选但推荐)
存储富文本类内容不需要使用BLOB二进制类型,改为MEDIUMTEXT或LONGTEXT类型更适配文本场景,编码处理、查询排序的兼容性更好,也能避免后续不必要的二进制读写编码问题。
3. 验证修复
修改后刷新页面,检查categories变量输出完整无截断,即可解决JSON解析报错、食品条目不展示、多余rn字符、HTML标签直接输出的所有问题。
内容的提问来源于stack exchange,提问作者Team Thunder
相关产品推荐
相关产品推荐

