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-8BOM头问题

搞的很费劲,还是用原生的写法吧
2.json_encode是原生的php,更容易上手。
3.ajaxReturn,这个就不明白了,好像用起来挺费劲

posted @   风意不止  阅读(5653)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示