axios异步提交表单数据的几种方法

 更新时间:2019年08月11日 08:44:59   作者:赐我白日梦  
这篇文章主要给大家介绍了关于axios异步提交表单数据的几种方法,文中通过示例代码介绍的非常详细,对各位大家学习或者使用axios具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

踩坑Axios提交form表单几种格式

前后端分离的开发前后端, 前端使用的vue,后端的安全模块使用的SpringSecurity,使用postman测试后端的权限接口时发现都正常,但是使用vue+axios发送异步的请求后端一直获取不出axios提交的form表单的数据,爬坑两个半钟头找到了答案

axios用post异步形式提交的数据和我们直接使用from表单提交的数据的格式(Form Data格式)是不一样的,在下面列举

默认格式Request Payload

直接使用axios发送异步请求,没任何处理的代码如下:

const service = axios.create({})

doLogin (pojo) {
 return request({
  url: '/api/user/login',
  method: 'post',
  data: pojo
 })

这种方式提交的表单格式是默认是RequestPayload, 它的长下面这个样子

可以看到,它的Contet-type是 "Content-Type": "application/json;"
但是后台的SpringSecurity对这种结果可不买单,在Request中解析不出任何数据来

处理成Form Data格式

使用插件qs, 安装命令如下:

npm install --save qs

请求编码:

const service = axios.create({})

 doLogin (pojo) {
 return request({
  url: '/api/user/login',
  method: 'post',
  data: qs.stringify(pojo)
 })
 }
 
 或者
 
 doLogin (pojo) {
 return request({
  url: '/api/user/login',
  method: 'post',
  data: pojo ,
  transformRequest: [function (data) {
  data = qs.stringify(data);
  return data;
  }],
 })
 }

经过这样处理的表单数据长成下面的这样, 这也是我们最常用的Form Data格式,这种格式的数据可以从后台的HttpRequest中把提交的属性解析出来

其他类型的Content-Type对应的表单数据格式

const service = axios.create({
 headers: {
  "Content-Type": "multipart/form-data; charset=utf-8;"
  }
})

 doLogin (pojo) {
 return request({
  url: '/api/user/login',
  method: 'post',
  data: qs.stringify(pojo)
  })
 }

它长这样

const service = axios.create({
 headers: {
  "Content-Type": "multipart/form-data; charset=utf-8;"
  }
})

 doLogin (pojo) {
 return request({
  url: '/api/user/login',
  method: 'post',
  data: pojo
  })
 }
---

const service = axios.create({
 headers: {
  "Content-Type": "multipart/form-data; charset=utf-8;"
  }
})

 doLogin (pojo) {
 return request({
  url: '/api/user/login',
  method: 'post',
  data:pojo
  })
 }

const service = axios.create({
 headers: {
  "Content-Type": "application/x-www-form-urlencoded; charset=utf-8;"
 }
})

 doLogin (pojo) {
 return request({
  url: '/api/user/login',
  method: 'post',
  data: qs.stringify(pojo)
 })
 }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • 详解@Vue/Cli 3 Invalid Host header 错误解决办法

    详解@Vue/Cli 3 Invalid Host header 错误解决办法

    这篇文章主要介绍了详解@Vue/Cli 3 Invalid Host header 错误解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 深入浅析Vue中mixin和extend的区别和使用场景

    深入浅析Vue中mixin和extend的区别和使用场景

    Vue中有两个较为高级的静态方法mixin和extend,接下来给大家介绍Vue中mixin和extend的区别和使用场景,感兴趣的朋友一起看看吧
    2019-08-08
  • vue + webpack如何绕过QQ音乐接口对host的验证详解

    vue + webpack如何绕过QQ音乐接口对host的验证详解

    这篇文章主要给大家介绍了关于利用vue + webpack如何绕过QQ音乐接口对host的验证的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-07-07
  • 一文带你搞定svg-icon的使用方式

    一文带你搞定svg-icon的使用方式

    这篇文章主要介绍了一文带你搞定svg-icon的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • vue-cli2打包前和打包后的css前缀不一致的问题解决

    vue-cli2打包前和打包后的css前缀不一致的问题解决

    这篇文章主要介绍了vue-cli2打包前和打包后的css前缀不一致的问题解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • vue 实现element-ui中的加载中状态

    vue 实现element-ui中的加载中状态

    这篇文章主要介绍了vue 实现element-ui中的加载中状态,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue项目双滑块组件使用

    vue项目双滑块组件使用

    这篇文章主要介绍了vue项目双滑块组件使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • vue2结合echarts实现一个地图的效果

    vue2结合echarts实现一个地图的效果

    这篇文章主要介绍了vue2结合echarts实现一个地图的效果,本文通过实例代码给大家介绍的非常详细,对大家何用vue和echarts实现一个地图有一定的帮助,感兴趣的朋友一起看看吧
    2024-03-03
  • vue打包部署到springboot的实现示例

    vue打包部署到springboot的实现示例

    项目开发中,一般我们都会使用SpringBoot+Vue进行前后端开发,本文主要介绍了vue打包部署到springboot的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Vue.js 3.x 中的响应式数据ref 与 reactive详解

    Vue.js 3.x 中的响应式数据ref 与 reactive详解

    ref 和 reactive 是 Vue.js 3 中用于创建响应式数据的两个关键函数,它们分别适用于不同类型的数据,帮助我们更好地组织和管理组件的状态,这篇文章主要介绍了Vue.js 3.x 中的响应式数据:ref 与 reactive,需要的朋友可以参考下
    2024-01-01

最新评论