Vue 使用formData方式向后台发送数据的实现


Posted in Javascript onApril 14, 2019

很多时候在使用form向后台发送数据的时候,并不需要使用到表单组件。

例如时间戳、ip等,这个时候除了ajax之外,还可以使用HTML5的一个全新方法FormData;在input[type = file]的文件类型中,很多时候想要把一张图片或者是使用canvas绘制好的图像传送到后台时,无法赋值给file文件,只能转换为base64类型传送到后台,然后由后台转换为图片再进行服务器存储;此过程较为复杂;

使用formdata,只需创建新的formdata对象,将要发送的数据添加进去,后台即可接收;数据以及文件对象皆可;

1. 基本使用方式

template

<input class="file" name="file" type="file" accept="image/png,image/gif,image/jpeg" @change="update"/>

JavaScript

update (e) {
  let file = e.target.files[0]
  // console.log(file)
  let param = new FormData() // 创建form对象
  param.append('file', file, file.name) // 通过append向form对象添加数据
  param.append('id', this.$store.state.userId) // 添加form表单中其他数据
   // withCredentials: true 使得后台可以接收表单数据 跨域请求
  const instance = axios.create({
    withCredentials: true
  })
  // url为后台接口
  instance.post('url', param)
    .then(this.succ) // 成功返回信息 调用函数 函数需自己定义,此处后面省略
    .catch(this.serverError) // 服务器错误 调用对应函数 函数需自己定义,此处后面省略
}

2. 美化 input file 按钮 (拓展)

思路:

  1. 简单粗暴地隐藏:opacity: 0;
  2. 在 <input class="file"> 元素节点的位置上创建一个好看的元素节点,比如img
  3. 将 <input class="file"> 元素的z轴变高,使得其覆盖<img/> :z-index: 5;
  4. 因为 <input class="file"> 是透明的,那么我们就只看见它同xy上的好看的<img />
  5. 点击这个好看的<img /> 其实是点击了它上层的表单

以上思路可以实现点击用户头像,通过表单上传更换头像,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript静态的url如何传递
May 03 Javascript
jquery ajax 调用失败的原因示例介绍
Sep 27 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
Feb 12 Javascript
extjs_02_grid显示本地数据、显示跨域数据
Jun 23 Javascript
js动态创建及移除div的方法
Jun 03 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
Sep 16 Javascript
常用jQuery选择器汇总
Feb 02 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
Dec 12 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
Dec 22 Javascript
详解webpack 入门与解析
Apr 09 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
May 24 Javascript
vue实现简单加法计算器
Oct 22 Javascript
说说如何使用Vuex进行状态管理(小结)
Apr 14 #Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
Apr 14 #Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
Apr 14 #Javascript
vue 实现小程序或商品秒杀倒计时
Apr 14 #Javascript
js中async函数结合promise的小案例浅析
Apr 14 #Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
Apr 14 #Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
Apr 13 #Javascript
You might like
PHP-Java-Bridge使用笔记
2014/09/22 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
php中smarty区域循环的方法
2015/06/11 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
深入浅出讲解:php的socket通信原理
2016/12/03 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
动态加载JS文件的三种方法
2013/11/08 Javascript
Jquery使用css方法改变样式实例
2015/05/18 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
浅谈js的html元素的父节点,子节点
2016/08/06 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
react.js使用webpack搭配环境的入门教程
2017/08/14 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
Vue搭建后台系统需要注意的问题
2019/11/08 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
2019/08/09 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
python标识符命名规范原理解析
2020/01/10 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
python列表的逆序遍历实现
2020/04/20 Python
Python通过文本和图片生成词云图
2020/05/21 Python
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
动物科学专业毕业生的自我评价
2013/11/29 职场文书
幼儿园英语教学反思
2014/01/30 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
python实现图片批量压缩
2021/04/24 Python
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android