最近作项目,须要用到vue,后台是php,第一次使用axios进行请求,本觉得同ajax同样,会很简单,可是结果每每不让人满意啊,get请求很简单,这里就不说了,主要说下 post请求方式。php
使用axios进行post请求,后台竟然接收不到数据,这就纳闷了,因而网上一顿搜索,如今将所用的解决办法给你们说下:前端
起初使用params.append("属性名":属性值)的方式,对于简单的数据传递这样是没有问题的,后台能够正常接收数据,但我发现一个问题,不知道你们有没有遇到过,当传递数据里含有数组时,你会发现传到后台的是字符串的形式 arr:a1,b1,c1 而非正常格式 arr:[a1,b1,c1]不符合个人要求,继续查找。vue
看到网上好多解决办法都在说qs,因而装了qs插件,使用方法也很简单。首先安装插件,而后注册组件,axios.post(url,Qs.stringify(params)),在传递参数前,用qs转换下格式就能够了,Qs是将对象 序列化成URL的形式,以&进行拼接,在后台输出下接收的数据,嘿有值了,别提有多高兴了,刚乐呵没二分钟,等会再认真看看,这才发现当数据为空时qs竟然给过滤掉了,直接没传,这叫一个伤心。。。ios
网上的帖子大部分都是在前端处理,但没什么太好的解决办法,因而把思路转到后台,改变后台的接收方式,用file_get_contents('php://input')来接收前端传来的参数,前端正常格式传输。ajax
axios.post(url, params,{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'})
以上只是我的的实践通过,有其余解决办法的,欢迎留言。axios