JS专题-FormData
var formData = new FormData();

<form id="coords" class="coords" onsubmit="return false;" action="">
<!-- 主要的控件 -->
<input id="file" type="file" >
<div class="inline-labels">
<label>X1 <input type="text" size="4" id="x1" name="x1" /></label> <label>Y1
<input type="text" size="4" id="y1" name="y1" />
</label> <label>X2 <input type="text" size="4" id="x2" name="x2" /></label>
<label>Y2 <input type="text" size="4" id="y2" name="y2" /></label> <label>W
<input type="text" size="4" id="w" name="w" />
</label> <label>H <input type="text" size="4" id="h" name="h" /></label>
</div>
</form>
<button id="btn">上传头像</button>

主要是通过formData封装我们要传递的参数,然后使用ajax传递到后端。
这里有两中方式
1.

$("#btn").click(function(){
var form = document.getElementById("coords");//获取到form表单$("coords")[0] 这样也可以
var formData = new FormData(form);//创建一个formData对象,将表单中的数据放进去,有一个问题,就是普通参数可以放进去,在后端也可以拿到,文件也可以拿到,昨天测试了

$.ajax({//ajax
url: "/upload/uploadHeaderPic",//文件上传路径
type: "POST",
processData : false,//不处理数据,必须为false
contentType : false,//不设置内容类型,必须为false
data: formData,//这个就是我们封装的参数的一个formData
dataType:"json",
success: function(data){
//layer.msg(data.msg)
alert(data.msg);
console.log("msg",data.msg)
},
error:function(e){
console.log("msg","ajax调用出现错误")
}
});

}

2.

$("#btn").click(function(){
//这里是只创建对象,不把整个表单放进去,而是一个一个的放进去
var formData = new FormData();//创建一个formData对象
var x1 = $('#x1').val(),
x2 = $('#x2').val(),
y1 = $('#y1').val(),
y2 = $('#y2').val();
formData.append('x11',x1 );
formData.append('y11',y1 );
formData.append('x22',x2 );
formData.append('y22',y2 );

$.ajax({//ajax
url: "/upload/uploadHeaderPic",
type: "POST",
processData : false,//不处理数据,必须为false
contentType : false,//不设置内容类型,必须为false
data: formData,
dataType:"json",
success: function(data){
//layer.msg(data.msg)
alert(data.msg);
console.log("msg",data.msg)
},
error:function(e){
console.log("msg","ajax调用出现错误")
}
});

})

上边都是普通文本参数的传递。下边说下图片的传递。

formData.append('img0', $('#file')[0].files[0]);
图片的传递也是拿到图片的值,然后设置参数传递。
但是需要注意的一点就是如何拿到图片的值。
$('#file')[0].files[0] //这个取值就可以拿到 <input id="file" type="file" > 的值。这里都写的是数组,$ 对象取值的问题吧。需要研究!!!
这里设置值的时候如果写成这样
formData.append('img0', $('#file')[0].files);我是用的是jfinal测试的,所以,这里是拿不到值的。具体原因未知。
如果多个值可以循环遍历
for(var i=0; i<$('#file')[0].files.length;i++){//使用for循环将选择的文件一个一个添加(append)到formData对象中
formData.append('img0', $('#file')[0].files[i]);//注意:如果你使用的是jfinal框架这里的key(img)必须是不同的,如果相同的话文件能上传但是拿上传文件名的时候只能拿到一个
}
这种循环遍历的方式也是可以拿到值的。
后台取值的时候jfinal的方式 getFiles("head"); “head”这个可以不写,这个是一个设置上传路径。getFiles()就可以拿到全部的值。
普通取值的话,直接getPara("xx");就可以
图片的传递方式和上边的普通传递参数方式一样都是使用一样的ajax方式
JS专题-FormData的更多相关文章
- c#+js 使用formdata上传文件
如果不是使用form表单submit的形式,我们可以手动通过formdata传值(针对文件上传等) 比如: <html> <head> <meta name=" ...
- 使用JS的FormData对象
利用FormData对象,你可以使用一系列的键值对来模拟一个完整的表单,然后使用XMLHttpRequest发送这个"表单". 创建一个FormData对象 你可以先创建一个空的F ...
- Node.js 专题
前提电脑中已经安装过NodeJS, npm.现在需要进行升级操作.1.查看当前的npm和NodeJs的版本: C:\Users\Administrator>node -v v4.4.3 C:\U ...
- js通过formData上传文件,Spring后台处理
1.前端 var formData = new FormData(); formData.append('file', $("#file").val()); $.ajax({ ur ...
- js中formData的使用
FormData 对象的使用 https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/Using_FormData_Objects http ...
- js中FormData+XMLHttpRequest数据传输
前言: 首先我们需要了解,前后端进行数据传输依赖于浏览器的XMLHttpRequest对象 一.什么是XMLHttpRequest对象? XMLHttpRequest 是DOM对象,提供了对于http ...
- 前端程序员难翻身,没有好的学习方法,你永远无法成功,vue.js专题
学习vue正确思路,是先学vue-cli,再学vue.js单文件引用的用法,这样会在极短时间内撤底撑握vue, 如果先学vue.js单文件用法,再去学vue-cli4,可以说是重新学vue,,,,难处 ...
- 【干货分享】Node.js 中文学习资料和教程导航
这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...
- node.js中文资料导航 Mark
Node.js HomePage Infoq深入浅出Node.js系列(进阶必读) Node.js中文文档 被误解的 Node.js Node.js C++ addon编写实战系列 热门node.js ...
随机推荐
- torch.utils.data.DataLoader 将数据按批次分成很多组,每次抛出一个小组
torch.utils.data.DataLoader 数据加载器,结合了数据集和取样器在训练模型时使用到此函数,用来把训练数据分成多个小组,此函数每次抛出一组数据.直至把所有的数据都抛出.就是做一个 ...
- 面向对象-static关键字实战案例
面向对象-static关键字实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.static关键字概述 1>.static的功能 static关键字用于修饰成员变量和 ...
- 3 ~ express ~ 静态文件托管
静态资源文件处理 (一)设置静态资源托管目录 /* * 当 用户访问的 url 以 /public 开始 ,那么直接返回对应 __dirname + '/public' 下的文件 . 注意是双下划 ...
- CSS3 之高级动画(6)CSS3 clip-path属性实现的几何图形变形动画
clip-path 属性介绍: clip-path属性可以创建一个只有元素的部分区域可以显示的剪切区域. 区域内的部分显示,区域外的隐藏. 剪切区域是被引用内嵌的URL定义的路径或者外部svg的路径. ...
- Swift - 从相册中选择视频(过滤掉照片,使用UIImagePickerController)
(本文代码已升级至Swift4) 有时我们需要从系统相册中选择视频录像,来进行编辑或者上传操作,这时使用 UIImagePickerController 就可以实现. 默认情况下,UIImagePic ...
- 新手转行必知!Python和Java到底有啥区别?
TIOBE 9月编程语言排行榜中Java第一,但PYPL 9月排行榜中Python却是第一.两个编程语言排行榜均是旨在给开发者做一个学习参考,那么问题来了:Java和Python都很火,两个语言到底有 ...
- argv从控制台输入多个参数
arg多个参数: #!/usr/bin/env python3 import sys #控制台要输入的两个参数格式为:python script_name.py 参数1 参数2 input_file= ...
- PAT Advanced 1155 Heap Paths (30) [DFS, 深搜回溯,堆]
题目 In computer science, a heap is a specialized tree-based data structure that satisfies the heap pr ...
- 201771010123汪慧和《面向对象程序设计Java》第十四周实验总结
一.理论部分 1.Swing和MVC设计模式 (1)设计模式初识 (2)模式—试图—控制器模式 (3)Swing组件的模型—试图—控制器分析 2.Java组件有内容.外观.行为三个主要元素:这三个主要 ...
- POJ - 2718 Smallest Difference(全排列)
题意:将n个数字分成两组,两组分别组成一个数字,问两个数字的最小差值.要求,当组内数字个数多于1个时,组成的数字不允许有前导0.(2<=n<=10,每个数字范围是0~9) 分析: 1.枚举 ...