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,這個就不明白了,好像用起來挺費勁