vue axios POST传参问题

这段时间在一边在学习一边再用vue做实例项目,期间遇到的坑记录下。

因为做到的项目需要ajax与后台交互,用的框架是vue的,自然优先选择了vue的axios

简单做个axios的介绍,官方的原文:Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

在vue1.0版本中是使用vue-resource进行ajax发送,后来vue2.0版本中vue官方推荐使用axios来完成ajax请求,同时停止了对vue-resource的维护

vue本身是不具备发送ajax请求的,所以需要借助axios这个第三方库来完成ajax请求。

axios的语法如下:

GET请求

// 向具有指定ID的用户发出请求
    axios.get('/user?ID=12345')
    .then(function (response) {
    console.log(response);
    })
    .catch(function (error) {
    console.log(error);
    });
     
    // 也可以通过 params 对象传递参数
    axios.get('/user', {
    params: {
    ID: 12345
    }
    })
    .then(function (response) {
    console.log(response);
    })
    .catch(function (error) {
    console.log(error);
    });

POST请求:

axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
    })
    .then(function (response) {
    console.log(response);
    })
    .catch(function (error) {
    console.log(error);
    });

我按照官方提供的实例代码去使用POST请求,发现后台完全接收不到参数,找了些资料,原因好像是因为axios的传输格式和ajax的传输方式不同,导致后台接收不到参数(我用的是php作后台。

解决办法就是需要把数据格式转换成form-data格式

要转换成form-data格式需要qs包,如果是通过npm安装的axios,那一般在你安装axios后qs就已经自带了,如没有的话自行使用命令 npm install 安装。

安装好后需要引入qs包

import qs from 'qs';

然后转换格式

var data = qs.stringify({

                    name: '123',

                    pass: '123'

                });

然后再把data当成值传给后台就好了。

具体代码如下:

        var data = qs.stringify({

                    name: "123",

                    pass: "123",


                });

	this.$axios.post("后台地址", data).then(function (response) {

                        console.log(response);

                    }).catch(error => {

		      	 console.log(error);

	      		});

好了,到这后不出意外后台已经可以接收到参数了,希望能帮得上需要的小伙伴们。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值