axios post 请求后端参数为null解决方案

本文介绍了解决axios在POST请求中参数丢失的问题,通过将参数转换为FormData对象或使用qs模块进行字符串化,确保后端能正确接收。适用于前后端分离项目的参数传递优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看看官方教学请求写法

axios.post('http://xxx.xxx.xxx.xxx:xxxx/xx', {'id': 'test'}).then(function (res) {
    console.log(res)
  }).catch(function (error) {
    alert(error)
  })

 

结果后端接收到请求后,从HttpServletRequest获取的参数居然是null,这里记录一下,怎样解决这个问题,免得以后忘记,原因可以网上找找

这是后端的接收请求代码

 @RequestMapping(value="/test",method= RequestMethod.POST)
    public String test(HttpServletRequest request){
        String id = request.getParameter("id");
        System.out.println(id);return "";
    }

 

方法1:

在前端发送axios的参数改成一个FromData对象,如下:

var f = new FormData()
f.append('id', 'test')

axios.post('http://xxx.xxx.xxx.xxx:xxxx/xx', f).then(function (res) {
    console.log(res)
  }).catch(function (error) {
    alert(error)
  })

 

方法2:

使用方法1后,发现如果我已经有一个对象,每次请求都需要重新拆开里面的内容,重新放到FormData不就和麻烦,所以就找来了qs模块帮忙实现对象转换

第一步就是安装qs

npm install qs --save-dev

 

第二步,引用qs

import qs from 'qs'

//Vue全局对象可用
Vue.prototype.$qs = qs

 

第三步调用

var test = {'id', 'test'}

//这里的this是Vue对象, axios.post(
'http://xxx.xxx.xxx.xxx:xxxx/xx', this.$qs.stringify(test)).then(function (res) { console.log(res) }).catch(function (error) { alert(error) })

 

总结:网上还有很多方式,不过本人觉得这个方式最容易,改动最少,所以就使用以上两种方法了,使用这两种方法就能后台就能成共获取到数据了

转载于:https://www.cnblogs.com/oscar1987121/p/10496537.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值