场景: thinkphp3.2.3 后台接口为非url传参,前端说是用post传参的
问题描述:接口取不到参数数据,用 I()函数,$_GET,$_REQUEST,$_POST等都取不 到数据
原因:一个PHP老同事也遇到过相同问题。原因后面详述
解决:后台用
$data = file_get_contents("php://input");
来获取前端传来的参数
功能整体代码如下:
/**
* 前端扫描二维码,查询产品信息及相关厂家信息
* @param {string} $itemId
* @return {json} $data $info $status
*/
public function getItemInfo()
{
//url传参接收(这是以前接受不到参数的代码,注释掉了,方便大家对比)
//$tid = I('itemId');
//$uid = I('uid');
//$location = I('location');
//安卓前端 传参接收(这是后来改用的接收参数的代码)
$tmp = file_get_contents("php://input");
$arr = json_decode($tmp,true);
$tid = $arr['itemId'];
$uid = $arr['uid'];
$location = $arr['location'];
if(!$uid) $uid = 'unreg';//未传用户uid,默认设置 为 uid = 'unreg'的用户
if(!$tid){
$this->error('扫描出错',0);
}
//后面代码省略,都是功能性代码了...
}