PHP ajax使用echo代替return解决前端api无显示问题

10 篇文章 0 订阅

echo & return

今天为了一个echo和return的问题忙了一整天,经过无数次试错,终于发现api前端调用没有数值的原因是因为没有用echo来替代return,之前也没注意过这么多,于是乎必须要提醒一下自己

二者区别

echoreturn 均为PHP的语言结构,在使用中不需要括号,使用括号会造成语义的变化

echo() 只能输出一个字符串
return()返回的是括号表达式的值
在传输数据的过程中:

echo会输出数据,适合于php浏览器javascript之间进行通信,或者不同服务器之间进行通信
return返回数据但是不输出,适合不同PHP脚本之间进行通信

在写WeChat的接入脚本时,我使用的是return,然而在设置服务器配置时发现token验证失败,查错N遍没有发现问题,后参考了前辈的代码发现使用echo来返回字符串,遂改正,通过验证。

echo输出数据,是会向调用脚本的进程输出字符串,而return在调用完成后返回的字符串,并不会输出,仅仅是保留下来等待程序的调用,因此在WeChat与服务器的通信中,接收不到return返回的值,而使用echo时会有输出,可以接收到。

因此,当我们向服务器发送请求(request),要获得服务器返回的数据(即进行HTTP/HTTPS通信)时,我们应该用echo来输出数据,这样数据才会存在于服务器的response(返回数据)里,而在服务器本地不同脚本之间互相调用(include等)时,使用return返回数据并且可以保存,而不会产生输出。(不了解request/response请查阅HTTP原理(其实我也不了解:P))

PHP echo 与 return

储存地址区别

return 作为函数返回值或结束语句,是返回的数据的指针,也就是数据存放的地址,而接口需要返回的是真实的数据,因为前后端使用的是不同的内存系统,所以无法根据地址找到相应的数据,而echo print sprinf等这些能够在浏览器中打印数据的函数都是基于http协议传输的真实数据,所以在前端是可以获取和判断的.

框架里面返回数据用的return,但是原生的php返回数据用echo

php 返回接口数据使用return不用echo

Ajax用echo而非return

PHP在处理ajax返回值的时候,如果使用returnreturn $result会失败,echo $result却没问题。解释原因如下:

1.ajax请求从服务器端读取返回值,而且这些返回值必须为一些可读的数据类型, 例如json或html。为了打印这些返回值 你需要echo,但是return则不会打印出来数据 它只是简单的在服务器上传递数据。

2.Ajax获取返回值是使用HTTP请求。 return不会产生输出(只在server端进行),而echo可以(从server -> brower,http协议)。Ajax请求的url其实就是一个页面,它可以在浏览器显示,而 php中以return返回数据只是在服务器端去返回这些数据。
综上所述,如果ajax 地址是一个PHP return,将不会获取到正确数据。

Ajax不能接受php return值的原因

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值