php echo 返回json,thinkphp echo return 返回json数据的问题

今天一直在捣鼓一个jquery autocomplete插件

我是用ajax向后台获取下拉数据,然后蛋疼的来了

先说明一点 我用的是thinkphp框架

首先肯定是要返回json数据

然后我就 return json_encode($end,JSON_UNESCAPED_UNICODE);

结果前端js插件一直报错,大概就是说返回的json数据不合法

然后捣鼓了好长时间我就尝试用 echo json_encode($end,JSON_UNESCAPED_UNICODE);

结果竟然可以了,我也百思不得其解啊,请高手讲解下,东西明明一模一样 一个echo 一个return怎么就有区别了

回复内容:

今天一直在捣鼓一个jquery autocomplete插件

我是用ajax向后台获取下拉数据,然后蛋疼的来了

先说明一点 我用的是thinkphp框架

首先肯定是要返回json数据

然后我就 return json_encode($end,JSON_UNESCAPED_UNICODE);

结果前端js插件一直报错,大概就是说返回的json数据不合法

然后捣鼓了好长时间我就尝试用 echo json_encode($end,JSON_UNESCAPED_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的返回值吗?到底是什么问题不是一目了然的事情么。

正确做法应该是

exit(json_encode($end,JSON_UNESCAPED_UNICODE));

return是在function里返回的。

echo是输出到页面的。

TP有个$this->ajaxReturn();方法,可以直接用。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值