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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM