

https://blog.csdn.net/cnwyt/article/details/84883295

这是因为，axios 默认是使用 payload 形式提交是数据，而 jQuery 则默认使用 form 表单提交的数据。而通过 payload 形式的数据 PHP $_POST 无法接受到。

解决办法
(1) 修改前端代码:

修改 axios 提交数据格式，使用 qs 转换数据:

var axiosAjax = axios.create({
    baseURL:'/',
    // <---- 这里使用 qs 转换参数
    transformRequest: [function (data) { // 转换数据
        data = Qs.stringify(data); // 通过Qs.stringify转换为表单查询参数
        return data;
    }],
    headers:{
        'Content-Type':'application/x-www-form-urlencoded'
    }
})
1
2
3
4
5
6
7
8
9
10
11
(2) 修复后端代码:

修改后端PHP代码，使后端能够接收 payload 数据。

// 获取payload json数据，转换成数组形式
$postData = file_get_contents('php://input');
$requests = !empty($postData) ? json_decode($postData, true) : array();
1
2
3
备注，如果后端使用 Laravel 框架则无需修改，默认可以接收 payload 数据。
 
