Vue-使用axios进行post请求时参数接收不到

项目场景:

在用axios+Django开发一个简单的前后端分离留言板功能过程中, 遇到了一个小小的问题, 搞了几分钟才解决掉, 下面看一下问题的详细。


问题描述

先来看一下我的代码。

axios.post('http://127.0.0.1:8000/add/', {name:'zs',age:20}).then(res => {
	console.log(res);
})

本来我打算用axios.post()方法进行提交数据, 结果发现后端接收到的POST数据是空的, 看下面这张图。

可以看到我在上面打印输出了POST数据, 下面显示的也是POST请求, 结果还是没有数据。


原因分析:

因为在post请求中不能直接使用对象作为参数, 需要转换成键=值&键=值的形式才可以使用。


解决方案:

写一个函数对对象进行序列化

function objToParams(obj) {
    let arr = [];
    for (let key in obj) {
        arr.push(`${key}=${obj[key]}`);
    }
    return arr.join('&');
}

在请求时调用这个序列化函数

let obj = {
    name: '张三',
    age: 20
}
axios.post('http://127.0.0.1:8000/add/', objToParams(obj)).then(res => {
    console.log(res);
})

我就可以成功的拿到数据了。
在这里插入图片描述

参考资源链接:[Vue2使用axios解决POST请求404及参数传递问题](https://wenku.csdn.net/doc/6412b533be7fbd1778d424e3?utm_source=wenku_answer2doc_content) 在Vue2中遇到axios发起POST请求返回404错误通常与请求配置不正确有关,尤其是Content-Type的设置。对于期望接收`application/x-www-form-urlencoded`类型数据的API,我们需要自定义axios的配置以确保请求能够被正确处理。具体操作步骤如下: 首先,创建axios的实例,并设置`Content-Type`为`application/x-www-form-urlencoded`: ```javascript const instance = axios.create({ headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); ``` 接着,使用qs模块对参数进行编码,以确保参数能够以正确的格式发送: ```javascript const qs = require('qs'); const params = { key1: 'value1', key2: 'value2' }; instance.post('your-api-url', qs.stringify(params)).then(response => { // 成功回调处理响应数据 }).catch(error => { // 错误处理 }); ``` 在这段代码中,`qs.stringify(params)`方法将JavaScript对象转换为URL编码的查询字符串,这样就可以通过POST请求正确地传递参数给后端API。使用自定义的axios实例可以确保请求头中包含正确的`Content-Type`,而`qs`模块则处理参数的编码,从而避免404错误,并确保后端能够接收到预期的参数。 总的来说,通过上述步骤,我们能够解决Vue2中使用axios进行POST请求可能遇到的404错误和参数传递问题。这些操作细节对于前端开发者来说至关重要,因为它们直接关系到前端与后端接口交互的效率和成功率。对于希望深入了解axios或其他HTTP请求使用细节的开发者,推荐阅读《Vue2使用axios解决POST请求404及参数传递问题》,该文详细介绍了在Vue2项目中遇到的POST请求问题及其解决方法,非常适合那些希望提升前端开发技能的专业人士。 参考资源链接:[Vue2使用axios解决POST请求404及参数传递问题](https://wenku.csdn.net/doc/6412b533be7fbd1778d424e3?utm_source=wenku_answer2doc_content)
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python454

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值