axios发送post请求,后台($_POST)无法接受数据问题

问题重现

axios.post('api.php', { bar:123,blog:234 })
     .then(function (response) {
          console.log(response);
     })
     .catch(function (error) {
         console.log(error);
    });

在后台php打印$_POST数据

始终打印空数组

然鹅随后使用$.psot尝试

$.post('api.php',{bar:123,blog:234},function(res){},'json');

发现没有问题,正常接收数据


查找问题

我们打开浏览器异步调试工具

看到axios的请求头信息中

发现Request-Headers的Content-Type:application/json;charset=UTF-8

Request Payload为

{bar: 123, blog: 234}

同样使用jquery发送同样的post请求

发现其Request-Headers的Content-Type:application/x-www-form-urlencoded; charset=UTF-8

Form Data为

bar:
123
blog:
234

那么问题解决方法就来了,如果将axios请求头信息中Content-type变为:application/x-www-form-urlencoded; charset=UTF-8

是不是可以决绝该问题呢?

随后就是一顿操作


解决方式

方式一:

修改php接受数据方式

有原来直接使用$_POST需改为:

$request_data = file_get_contents ('php://input');
$data = json_decode ($request_data,true);
var_dump ($data);

方式二:

php依然使用$_POST进行数据接受

修改axios请求

这种方式大家也可参考官网:https://github.com/axios/axios

屏幕快照 2018-06-27 上午12.40.05_gaitubao_com_940x763.png

   require(['qs','vue','axios'],function(qs,Vue,axios){
        axios.post('api.php', qs.stringify({ 'bar': 123 }))
            .then(function (response) {
                console.log(response);
            })
            .catch(function (error) {
                console.log(error);
            });
            
    });


本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。

武斌博客 http://www.wubin.pro

Top