【源码解读】TP5return json_encode ajax自动被加上双引号
2019年9月2日
PHP事情起因
在thinkphp5中,return数据才是控制器正确的时候方式,而不是直接echo 然后die 或者exti 因为框架有后置数据的落地处理等等,直接让程序退出并不友好,既然我们选择了框架,就应该遵循框架的设计理念 这样子能让我们避免一些坑爹事件的发生。 此次我在控制器中,并没有使用tp的Json Response对象,而是想通过return json_encode($arr);返回字符串的形式 正常应该输出如下
{"name":"siam", "age":21}
结果却输出为
"{"name":"siam", "age":21}"
这样子就明显乱套了,前端解析直接崩溃。
控制器原理
追寻response后框架的处理,框架会根据控制器return的数据类型做不同的处理
- 返回Reponse子类,比如Json、Jsonp、Xml、View、重定向等等,则会执行子类的run()
- 返回不是Reponse子类,则会自动识别响应输出类型
在一次的需求中,需要使用复杂表头并且导出EXCEL表格,发现layui并不支持复杂表头的处理,社区之中也还未找到相关的方案。于是使用了table2excel插件协助完成需求。(如果你有更好更方便的方法,希望你能联系我或者留言交流一下,谢谢) 以下简单记一下笔记和步骤,方便自己和他人。
