对于axios.post的前后台的参数传递问题

axios 可以看成是另一种ajax,就是负责向后台进行请求和数据传递的组件

一般我们在前台页面请求后台时,如果数据量不大的情况下,get方式请求完全可以实现,如下:

var projectid = 1;

axios.get('../mysbranch/gettplusbranchs.json',

 params: {//请求数据
  "projectid":projectid
}
})
.then(function(response) {
 //成功请求后的操作
})

后台的接收参数:

@RequestMapping(value = "/gettplusbranchs.json")
public String  getProjectName(Model model, HttpServletRequest request,
HttpServletResponse response, HttpSession session) throws Exception{

 Integer projectid = ServletRequestUtils.getIntParameter(request, "projectid", -1);

}


 但是当数据量特别大的时候,get请求显然就不可以了,因为get请求的所带的数据会拼接到url上,而url的长度是受限制的(不同的浏览器,情况可能不一样)。所以应当用post请求更合适。

 但使用post时,并不是简单的将axios.get换成axios.post,仅仅是这样的话,后台按照上面的简单的写法是无法接收到参数数据的,为null,通过调试前后台发现传递的参数,是一个json串,后台的接收参数那里应该是要接收一个json串,然后再解析。具体的方式我没有对深入的研究。

 考虑在前台改变参数的组织,找了很久,终于找到了一个组织的结构,是URLSearchParams,具体这个URLSearchParams

是什么,应该怎么用可以参考下面的地址:

https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams#Browser_compatibility

https://segmentfault.com/a/1190000005980048

var params = new URLSearchParams();

params.append('projectid', projectid);
params.append('branches', mybranchesnames);
 axios.post('../tplusbranch/deletebranches.json',params,{
        headers:{
         "access-control-allow-origin":"*"//这里的access-control-allow-origin可以用来解决跨域问题
        }
})
.then(function(response) {

}

这样后台就可以以上面的方式获取到数据了。






  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值