vue+axios 是异步请求常见组合,但是axios还是需要注意的。
后台收不到数据有这么几种情况。
1、post后台请求,收不到数据 以PHP为例 $_POST为空
axios 会把数据自动转换成json字符串,发送类型:content-type:application/json
后台PHP还是按照multipart/form-data或x-www-form-urlencoded类型来接受数据,自然接收不到。
后台PHP处理,先检测$_POST是不是为空,再用下面的方法将获取的json字符串转成数组,获取值
public function post()
{
if (empty($_POST) && false !== strpos($_SERVER["CONTENT_TYPE"], 'application/json')) {
$content = file_get_contents('php://input');
$post = (array)json_decode($content, true);
} else {
$post = $_POST;
}
return $post;
}
2、axios,get请求后台获取不到数据
说起这个错误,主要是axios的文档没有看明白,就下手写代码了。
axios gei的请求参数应该用params 而post 可以使用data和params两种数据,data和params 两者不等同,params是最后拼接到网址url里的,data是被打包到body里提交后台的。
用反了,后台自然获取不到数据,我作为资深小白,曾经就卡在这里一晚上。
再就是qs类库,可以在axios配置里,将get请求的数据先用qs拼接成字符串
const param = {id:1,name:lamb}
param = qs.stringify(params)
console.log(param)
//结果'id=1&name=lamb'
然后再发送请求
飞哥冲在前,小白不踩坑。