《vue3小白填坑记》Axios 发送请求,后台收不到?

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'

然后再发送请求

飞哥冲在前,小白不踩坑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章