今天一直在搗鼓一個jquery autocomplete插件
我是用ajax向後台獲取下拉數據,然後蛋疼的來了
先說明一點我用的是thinkphp框架
首先肯定是要返回json數據
然後我就return json_encode($end,JSON_UNESCAPED_UNICODE);
結果前端js插件一直報錯,大概就是說返回的json資料不合法
然後搗鼓了好長時間我就嘗試用echo json_encode($end,JSON_UCAPCAPCAP_UNICODE);竟然可以了,我也百思不得其解啊,請高手講解下,東西明明一模一樣一個echo 一個return怎麼就有區別了
先說明一點我用的是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才能獲取到。
至於thinkphp裡面controller層的return。只是回給了thinkphp核心controller類別。最終如果該controller沒有任何輸出,response內容為空。
SF之前就有類似問題:echo和return的差別
再說一次好了:
是給PHP程式回傳結果的。
echo才是Ajax的回應。
真是醉了,樓主看到前端js錯誤了,就不能順便看看ajax的回傳值嗎?到底是什麼問題不是一目了然的事情。
正確做法應該是
<code class="php">exit(json_encode($end,JSON_UNESCAPED_UNICODE));</code>
return
是在function裡回傳的。
echo是輸出到頁面的。
TP有個$this->ajaxReturn();方法,可以直接用。