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