首頁  >  文章  >  後端開發  >  thinkphp echo return 傳回json資料的問題

thinkphp echo return 傳回json資料的問題

WBOY
WBOY原創
2016-08-04 09:19:241770瀏覽

今天一直在搗鼓一個jquery autocomplete插件
我是用ajax向後台獲取下拉數據,然後蛋疼的來了
先說明一點我用的是thinkphp框架
首先肯定是要返回json數據
然後我就return json_encode($end,JSON_UNESCAPED_UNICODE);
結果前端js插件一直報錯,大概就是說返回的json資料不合法
然後搗鼓了好長時間我就嘗試用echo json_encode($end,JSON_UCAPCAPCAP_UNICODE);竟然可以了,我也百思不得其解啊,請高手講解下,東西明明一模一樣一個echo 一個return怎麼就有區別了

回覆內容:

今天一直在搗鼓一個jquery autocomplete插件

我是用ajax向後台獲取下拉數據,然後蛋疼的來了

先說明一點我用的是thinkphp框架
首先肯定是要返回json數據
然後我就
return json_encode($end,JSON_UNESCAPED_UNICODE);
結果前端js插件一直報錯,大概就是說返回的json資料不合法然後搗鼓了好長時間我就嘗試用
echo json_encode($end,JSON_UCAPCAPCAP_UNICODE);竟然可以了,我也百思不得其解啊,請高手講解下,東西明明一模一樣一個echo 一個return怎麼就有區別了
js回呼需要的是值,php必須只有輸出json字串它才能接收到。
這就是http協議,request發送和response接受的概念。 response回傳的內容裡必須有值。 ajax才能獲取到。

而php 原樣輸出json字串的語句有echo 函式有exit()die()

至於thinkphp裡面controller層的return。只是回給了thinkphp核心controller類別。最終如果該controller沒有任何輸出,response內容為空。



SF之前就有類似問題:echo和return的差別
再說一次好了:


return
是給PHP程式回傳結果的。

echo才是Ajax的回應。
真是醉了,樓主看到前端js錯誤了,就不能順便看看ajax的回傳值嗎?到底是什麼問題不是一目了然的事情。

正確做法應該是

<code class="php">exit(json_encode($end,JSON_UNESCAPED_UNICODE));</code>

return

是在function裡回傳的。

echo是輸出到頁面的。
TP有個$this->ajaxReturn();方法,可以直接用。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn