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,这个就不明白了,好像用起来挺费劲

posted @ 2020-07-07 17:40  风意不止  阅读(5597)  评论(0编辑  收藏  举报