解决在Vue中使用axios用form表单出现的问题


Posted in Javascript onOctober 30, 2019

vue中使用Axios第三方库,采用形式提交,参数格式为multipart /格式数据 ,请求参数变为对象格式的解决办法。(推荐第二种方法)

提交数据的四种编码方式

一,应用/ X WWW的窗体-urlencoded

这应该是最常见的后编码方式,一般的表单提交默认以此方式提交。大部分服务器语言对这种方式都有很好的支持。在PHP中,可以用$ _ POST [“钥匙”]的方式获取到关键的值,在节点中我们可以使用查询字符串中间件对参数进行分离

app.post("/server",function(req,res){
 req.on("data",function(data){
  let key=querystring.parse(decodeURIComponent(data)).key;
  console.log("querystring:"+key)
 });
});

2.multipart /格式数据

这也是一种比较常见的后数据格式,我们用表单上传文件时,必须使形式表单的加密类型属性或者AJAX的内容类型参数等于多部分/格式的数据。使用这种编码时格式到发送后台的数据长得像这样子 不同字段以开始,接着是内容描述信息,最后是字段具体内容。如果传输的是文件,还要包含文件名和文件类型信息

解决在Vue中使用axios用form表单出现的问题

--boundary

3.application / json

axios默认提交就是使用这种格式。如果使用这种编码方式,那么传递到后台的将是序列化后的json字符串。我们可以将application / json与application / x-www-form -urlencoded的发送数据进行比较

首先应用的英文/ JSON: 接着是应用程序/ x-WWW窗体-urlencoded: 这里可以明显看出应用程序/ x-WWW窗体-urlencoded上传到后台的数据是以键值形式进行组织的,而应用程序/ JSON则直接是个JSON字符串。如果在处理的应用程序/ JSON时后台还是采用对付应用程序/ x-WWW窗体-urlencoded的方式将会产生问题。例如后台的node.js依然采用之前对付应用程序/ x-WWW窗体-urlencoded的方法,那么之后得到的数据的英文这样子的 这个时候再只能电子杂志到未定义

解决在Vue中使用axios用form表单出现的问题

querystring.parse(decodeURIComponent(data))

解决在Vue中使用axios用form表单出现的问题

querystring.parse(decodeURIComponent(data)).key

4.text / XML

剩下的一种编码格式是文本/ XML,这种格式我没有怎么使用过

解决方法

既然我们知道axios post方法默认使用application / json格式编码数据,那么解决方案就有两种,一是后台改变接收参数的方法,另一种则是将axios post方法的编码格式修改为application / x- WWW窗体-urlencoded,这样就不需要后台做什么修改了。

先来看第一种解决方法

VUE组件中,爱可信发送后请求的代码如下

this.$axios({
 method:"post",
 url:"/api/haveUser",
 data:{
  name:this.name,
  password:this.password
 }
}).then((res)=>{
 console.log(res.data);
})

控制台此时标题网络里面的信息的英文这样子的 后台接收数据需要依赖中间件,我们事先装好,接着在后台代码中引用体解析器 这张截图中,作用英文发挥的代码仅仅的英文接下来在路由中使用身体解析器

解决在Vue中使用axios用form表单出现的问题

body-parser

解决在Vue中使用axios用form表单出现的问题

const bodyParser=require("body-parser");

app.post("/api/haveUser",bodyParser.json(),function(req,res){
 console.log(req.body);
 let haveUser=require("../api/server/user.js");
 haveUser(req.body.name,req.body.password,res);
});

这时,当前台发送后请求之后,后台控制台就会中出打印这时,通过或者就能拿到对应的值。 这种方法比较简单,也不需要前台做过多修改,推荐使用这种方法。req.body

解决在Vue中使用axios用form表单出现的问题

req.body.namereq.body.password

第二种解决方法,具体操作如下

前端

this.$axios({
 method:"post",
 url:"/api/haveUser",
 headers:{
  'Content-type': 'application/x-www-form-urlencoded'
 },
 data:{
  name:this.name,
  password:this.password
 },
 transformRequest: [function (data) {
  let ret = ''
  for (let it in data) {
   ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
  }
  return ret
  }],
}).then((res)=>{
 console.log(res.data);
})

其中发挥关键作用的是标头与transformRequest。其中 headers 的英文设置即将被发送的自定义请求头。 transformRequest 允许在向服务器发送前,修改请求数据。这样操作之后,后台querystring.parse(decodeURIComponent(data))电子杂志到的就是类似于{ name: 'w', password: 'w' }的对象。

后台代码如下

app.post("/api/haveUser",function(req,res){
  let haveUser=require("../api/server/user.js");
  req.on("data",function(data){
   let name=querystring.parse(decodeURIComponent(data)).name;
   let password=querystring.parse(decodeURIComponent(data)).password;
   console.log(name,password)
   haveUser(name,password,res);
  });
});

以上这篇解决在Vue中使用axios用form表单出现的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
struts2+jquery+json实现异步加载数据(自写)
Jun 24 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
浅谈Javascript中深复制
Dec 01 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
Dec 01 Javascript
浅谈js中function的参数默认值
Feb 20 Javascript
js获取ip和地区
Mar 10 Javascript
仿淘宝JSsearch搜索下拉深度用法
Jan 15 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
Sep 16 Javascript
详解Vue源码学习之双向绑定
Apr 10 Javascript
简单了解vue.js数组的常用操作
Jun 17 Javascript
解决ele ui 表格表头太长问题的实现
Nov 13 Javascript
Java Varargs 可变参数用法详解
Jan 28 Javascript
vue路由 遍历生成复数router-link的例子
Oct 30 #Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
Oct 30 #Javascript
vue遍历生成的输入框 绑定及修改值示例
Oct 30 #Javascript
微信小程序基于高德地图查找位置并显示文字
Oct 30 #Javascript
vue 实现cli3.0中使用proxy进行代理转发
Oct 30 #Javascript
vue cli3 配置proxy代理无效的解决
Oct 30 #Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
Oct 30 #Javascript
You might like
PHP不用递归实现无限分级的例子分享
2014/04/18 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
2014/01/24 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
js入门之Function函数的使用方法【新手必看】
2016/11/22 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
2016/12/26 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
Python获取系统默认字符编码的方法
2015/06/04 Python
在django view中给form传入参数的例子
2019/07/19 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
解决IDEA 的 plugins 搜不到任何的插件问题
2020/05/04 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
python中用Scrapy实现定时爬虫的实例讲解
2021/01/18 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
幼儿教师自我鉴定
2013/11/02 职场文书
医院检讨书范文
2014/02/01 职场文书
调查研究项目计划书
2014/04/29 职场文书
自主招生自荐信格式
2015/03/04 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS