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 相关文章推荐
js的alert弹出框出现乱码解决方案
Sep 02 Javascript
jquery预加载图片的方法
May 27 Javascript
JavaScript的jQuery库中ready方法的学习教程
Aug 14 Javascript
bootstrapValidator表单验证插件学习
Dec 30 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
Jan 19 Javascript
JS中from 表单序列化提交的代码
Jan 20 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
May 14 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
Mar 28 Javascript
使用vue-cli导入Element UI组件的方法
May 16 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
Oct 12 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
Dec 05 Javascript
基于JavaScript实现简单抽奖功能代码实例
Oct 20 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-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
PHP修改session_id示例代码
2014/01/08 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
php文件操作相关类实例
2015/06/18 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
jquery 防止表单重复提交代码
2010/01/21 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
基于jQuery实现弹幕APP
2017/02/10 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
Python遍历目录的4种方法实例介绍
2015/04/13 Python
Python入门学习指南分享
2018/04/11 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
面试求职的个人自我评价
2013/11/16 职场文书
个人授权委托书范本
2014/04/03 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
事业单位鉴定材料
2014/05/25 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
土建技术员岗位职责
2015/04/11 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
Android实现图片九宫格
2022/06/28 Java/Android