thinkphp5 返回json数据的方法---以及返回json为空的原因
thinkphp5 返回json数据为空的解决方法
1、用SoapUI来测试借口,Content-Type不是json,而是text/html;
2、自己的接口,最后的数据用了json_encode,也是不管用的;
3、用header来设置Content-Type也没有效果;
4、而改框架的配置default_return_type 为json,这也是不可取的,整站是网站需要返回的还是text/html;
综上情况,没有识破原理层面的问题根源,但是找到了一个解决办法:
在你这个接口方法里面的第一行单独写上以下这句:
Config::set('default_return_type', 'json');
这样这个配置适用于这个方法,不会影响其他方法,而且返回的数据Content-Type是json 的。
返回json好像有三种方法
1.使用原生的php语句
echo json_encode()
2.有一些是这样说的,使用ajaxReturn函数返回
$arr['name']=$picname;
$arr['pic']=$pics;
$arr['size']=$size;
$this->ajaxReturn ($arr,'JSON');
3.有的说tp返回的时候,使用json函数
echo json(XXXX)
到底应该使用哪个呢?
三者的区别
1.json()函数,和halt函数,dump函数,jsonp函数一样,都是助手函数,可以使用。
但是真正使用的时候,报出这种错误
Object of class think\response\Json could not be converted to string
可能是这种错误
后来发现是UTF-8的BOM头问题
搞的很费劲,还是用原生的写法吧
2.json_encode是原生的php,更容易上手。
3.ajaxReturn,这个就不明白了,好像用起来挺费劲
分类:
8thinkphp5.0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通