问题场景:
后台正常返回json格式的返回值,但是浏览器解析异常。如图
问题定位:
是返回值中有一个字段的值的末尾有空格。刚开始后端认为是前端在保存的时候保存了空格,需要前端处理一下。
这样解决的底层原理是什么呢?为什么会发生这样的问题呢? 作为一个热爱学习的前端同学,当然不会放过这个可以学习的机会了。
带着问题,我就和后端同事一起研究这个问题。后来发现
浏览器中必须遵守了 JSON 规范——如果 JSON 数据中需要出现 tab 字符,必须是经过转义的(
"\t"
或"\u0009"
);如果是直接出现,则被认为是非法字符,JSON.parse()
方法会报错。
当前的后端代码直接采用手动拼接,并没有去处理这个tab空格的问题,所以就导致了浏览器无法解析的问题。
总结:遇到问题,先想想根源,网络搜索寻找答案。不要直接甩锅,也不要直接去接锅,首选要做的是找到解决方法,解决问题。