JS FormData对象使用方法实例详解

来源:脚本之家  责任编辑:小易  

还是和表单提交是一样的 假设后台是php 只需要为formdata提供一个请求的接口 前端请求这个接口假设是post请求 你可以使用 $_POST["xxx"]formdata里面的健 如果这个请求有文件的话你可以通过$_FILE获取相关信息

本文实例讲述了JS FormData对象使用方法。分享给大家供大家参考,具体如下:

只是需要文件上传才用它的 xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;"); 改成 xmlHttp.setRequestHeader("Content-Type","multipart/form-data;")。 js模拟post提交的代码 通过js模拟post提交 1:请求需要

FormData的主要用途有两个:

alert(getFormData) 看下显示是什么呀,不清楚的,可以弹程序代码来分析下..

1、将form表单元素的name与value进行组合,实现表单数据的序列化,从而减少表单元素的拼接,提高工作效率。

System.out.println("USE :java flowDome parameter1 parameter2 circle"); System.out.println("parameter1 : 比较条件1,数字类型"); System.out.println("parameter2 : 比较条件2,数字类型"); System.out.println("circle :循环次数"); Sys

2、异步上传文件

一、创建formData对象

1、创建一个空对象:

在文件上传前修改formdata中文件的name值,我试过在fileDialogComplete()方法、startUpload()方法中加入以下代码。 ` var file = this.getFile(0); file.name = "测试.txt"; console.log(file); var newfile = new File([file], "测试.txt")

//通过FormData构造函数创建一个空对象 var formdata=new FormData(); //可以通过append()方法来追加数据 formdata.append("name","laotie"); //通过get方法对值进行读取 console.log(formdata.get("name"));//laotie //通过set方法对值进行设置 formdata.set("name","laoliu"); console.log(formdata.get("name"));//laoliu

2、通过表单对formData进行初始化

我心里很不是滋味,腰键盘突出就不能医治吗?我也是腰键盘突出,我走路时腿痛的厉害,腰也是痛,也跑了不少地方去医治,但都没有效果,也有医生让做手术,但是做手术医生说也保你能好,那我还不如不做,后来我终于医好了,这药不刺激胃,没有激素。用了半年时间好了,倪萍身体发胖,是不是用了激素药物呀?

创建表单:

战狼2这次票房预计55亿左右,在《敦刻尔克》没上映之前,应该不会遭遇到有效的票房狙击,乐观估计能达到60亿。从票房来看,绝对火了,比《美人鱼》还甩下一大截。我来分析为什么这么火?1、今年来,国产电影票房一直萎靡不振,电影投资这一块有不少大手笔,尤其一些热门ip,利用小鲜肉拉流量的电影,资本热捧这两个因素,但忽视了电影本身的制作质量,这导致观众一次又一次上当受骗,比如什么《微微一笑很倾城》这些典型的流量电影,每次观众的观影体验都低于预期,导致压抑了观众的电影消费,不是观众不喜欢看电影,而是烂片太多。《战狼2》冷不丁一出世,好家伙,一不是ip,二不靠小鲜肉,三用职人精神去做电影,在态度这一块,观众

<form id="advForm"> <p>广告名称:<input type="text" name="advName" value="xixi"></p> <p>广告类别:<select name="advType"> <option value="1">轮播图</option> <option value="2">轮播图底部广告</option> <option value="3">热门回收广告</option> <option value="4">优品精选广告</option> </select></p> <p><input type="button" id="btn" value="添加"></p> </form>

当初与她妈离婚时女儿才一岁哺乳期,除了女儿她不要其它什么也不给,身无分文的我抱着小女儿开始闯江湖,经历的艰难困苦自不必多说,值得庆幸的是我这女儿即聪明又漂亮,父女之间究竟有多恩爱千言万语也无从表述,已是晒晒照片大家看着领悟吧

通过表单元素作为参数,实现对formData的初始化:

根据《2017年事业单位分类革新实施方案》,全国高校和公立医院将不再纳入编制管理:保留高校和公立医院事业单位的属性,但是取消其编制。所谓“不纳入编制管理”,就是取消事业单位编制,但保留事业单位性质。而之所以要保留事业单位性质,主要是考虑到高校、公立医院的公益属性,不能完全推向市场化,还要由财政进行差额拨款。在全部取消事业单位编制之后,未来高校和公立医院将会实行全员合同聘任制。关于这项改革,很多教职员工都比较关心,随着高校和公立医院被取消事业编制,是否意味着庞大的教职工的编制在不久的将来也会被取消呢?虽然目前还没有任何消息触及到取消教师编制的事,但是“铁饭碗”说没就没的担忧几乎涌上每一位教师的心

//获得表单按钮元素 var btn=document.querySelector("#btn"); //为按钮添加点击事件 btn.onclick=function(){ //根据ID获得页面当中的form表单元素 var form=document.querySelector("#advForm"); //将获得的表单元素作为参数,对formData进行初始化 var formdata=new FormData(form); //通过get方法获得name为advName元素的value值 console.log(formdata.get("advName"));//xixi //通过get方法获得name为advType元素的value值 console.log(formdata.get("advType"));//1 }

二、操作方法

1、通过get(key)与getAll(key)来获取相对应的值

// 获取key为age的第一个值 formdata.get("age"); // 获取key为age的所有值,返回值为数组类型 formdata.getAll("age");

2、通过append(key,value)在数据末尾追加数据

//通过FormData构造函数创建一个空对象 var formdata=new FormData(); //通过append()方法在末尾追加key为name值为laoliu的数据 formdata.append("name","laoliu"); //通过append()方法在末尾追加key为name值为laoli的数据 formdata.append("name","laoli"); //通过append()方法在末尾追加key为name值为laotie的数据 formdata.append("name","laotie"); //通过get方法读取key为name的第一个值 console.log(formdata.get("name"));//laoliu //通过getAll方法读取key为name的所有值 console.log(formdata.getAll("name"));//["laoliu", "laoli", "laotie"]

3、通过set(key, value)来设置修改数据

key的值不存在,会添加一条数据

//通过FormData构造函数创建一个空对象 var formdata=new FormData(); //如果key的值不存在会为数据添加一个key为name值为laoliu的数据 formdata.set("name","laoli"); //通过get方法读取key为name的第一个值 console.log(formdata.get("name"));//laoli key的值存在,会修改对应的value值 //通过FormData构造函数创建一个空对象 var formdata=new FormData(); //通过append()方法在末尾追加key为name值为laoliu的数据 formdata.append("name","laoliu"); //通过append()方法在末尾追加key为name值为laoliu2的数据 formdata.append("name","laoliu2"); //通过get方法读取key为name的第一个值 console.log(formdata.get("name"));//laoliu //通过getAll方法读取key为name的所有值 console.log(formdata.getAll("name"));//["laoliu", "laoliu2"] //将存在的key为name的值修改为laoli formdata.set("name","laoli"); //通过get方法读取key为name的第一个值 console.log(formdata.get("name"));//laoli //通过getAll方法读取key为name的所有值 console.log(formdata.getAll("name"));//["laoli"]

4、通过has(key)来判断是否存在对应的key值

//通过FormData构造函数创建一个空对象 var formdata=new FormData(); //通过append()方法在末尾追加key为name值为laoliu的数据 formdata.append("name","laoliu"); //判断是否包含key为name的数据 console.log(formdata.has("name"));//true //判断是否包含key为age的数据 console.log(formdata.has("age"));//false

5、通过delete(key)可以删除数据

//通过FormData构造函数创建一个空对象 var formdata=new FormData(); //通过append()方法在末尾追加key为name值为laoliu的数据 formdata.append("name","laoliu"); console.log(formdata.get("name"));//laoliu //删除key为name的值 formdata.delete("name"); console.log(formdata.get("name"));//null

三、通过XMLHttpRequest发送数据

创建表单:

战狼2这次票房预计55亿左右,在《敦刻尔克》没上映之前,应该不会遭遇到有效的票房狙击,乐观估计能达到60亿。从票房来看,绝对火了,比《美人鱼》还甩下一大截。我来分析为什么这么火?1、今年来,国产电影票房一直萎靡不振,电影投资这一块有不少大手笔,尤其一些热门ip,利用小鲜肉拉流量的电影,资本热捧这两个因素,但忽视了电影本身的制作质量,这导致观众一次又一次上当受骗,比如什么《微微一笑很倾城》这些典型的流量电影,每次观众的观影体验都低于预期,导致压抑了观众的电影消费,不是观众不喜欢看电影,而是烂片太多。《战狼2》冷不丁一出世,好家伙,一不是ip,二不靠小鲜肉,三用职人精神去做电影,在态度这一块,观众

<form id="advForm"> <p>广告名称:<input type="text" name="advName" value="xixi"></p> <p>广告类别:<select name="advType"> <option value="1">轮播图</option> <option value="2">轮播图底部广告</option> <option value="3">热门回收广告</option> <option value="4">优品精选广告</option> </select></p> <p>广告图片:<input type="file" name="advPic"></p> <p>广告地址:<input type="text" name="advUrl"></p> <p>广告排序:<input type="text" name="orderBy"></p> <p><input type="button" id="btn" value="添加"></p> </form>

发送数据:

var btn=document.querySelector("#btn"); btn.onclick=function(){ var formdata=new FormData(document.getElementById("advForm")); var xhr=new XMLHttpRequest(); xhr.open("post","http://127.0.0.1/adv"); xhr.send(formdata); xhr.onload=function(){ if(xhr.status==200){ //... } } }

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript操作DOM技巧总结》、《JavaScript页面元素操作技巧总结》、《JavaScript事件相关操作与技巧大全》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

使用formdata对象引入哪个js

利用FormData对象,可通过js用一些键值对来模拟一系列表单控件,还可以使用XMLHttpRequest的send()方法异步提交表单。

首先,在之前的“前后台交互之传参方式”中讲了传统的form表单提交的方式(表单序列化),它只适用于传递一般参数,上传文件的文件流是无法被序列化并传递的。所以,使用FormData,可以轻松的和ajax结合进行文件上传。本回答被提问者采纳

formdata不能直接存对象数组吗

可以用数组形式,我贴代码了

html 部分

<li class="list-group-item disabled select-file-div">

<input type="file" multiple="true" class="input-sm clear-l-r-padding select-file" data-uploadtype="photo"/>

</li>

js部分

var i,

data = new FormData();

...

for (i = 0; i < $('.select-file').files.length; i++) {

data.append('file[]', this.files[i]);

}

...//省略代码若干...在选择完成后调用下面$.ajax$.ajax({

url: 'url'

type: "POST",

data: data,

dataType: 'json',

processData: false,// *重要,确认为false

contentType: false,

beforeSend: function () {

... },

success: function (res) {

console.log(res);

},

error: function (res) {

...}

});

php 部分 接收数组

$fileField='file';

$name = $_FILES$fileField;

$tmp_name = $_FILES[$fileField]['tmp_name'];

$size = $_FILES[$fileField]['size'];

$error = $_FILES[$fileField]['error'];

/ 如果是多个文件上传则$file["name"]会是一个数组 /

if(is_Array($name)){

$errors=array();

/多个文件上传则循环处理 , 这个循环只有检查上传文件的作用,并没有真正上传 /

for($i = 0; $i < count($name); $i++){

/设置文件信息 /

if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i] )) {

if(!$this->checkFileSize() || !$this->checkFileType()){

$errors[] = $this->getError();

$return=false;

}

}else{

$errors[] = $this->getError();

$return=false;

}

/ 如果有问题,则重新初使化属性 /

if(!$return)

$this->setFiles();

}

FormData在哪里导HTML.js

如果构造FormData对象是传入表单js对象,formData会自动注入表单里的值

nodejs解析FormData发送过来的表单数据,下图是nodejs后台打印输出的req.body

Node接收表单数据,用multiparty模块

var saveTowerFile = function (req, res, next) {

var form = new MULTIPARTY.Form({uploadDir: "../appData/excel/"});

form.parse(req, function (err, fields, files) {

if (err) {

console.log("失败!" + err);

var errcode = {result: 'INVALID_PARAM'};

res.send(errcode);

return;

} else {

var inputFile = files.file[0];

var uploadedPath = inputFile.path;

console.log(uploadedPath);

var dstPath = '../appData/excel/' + UUID.v1() + '.xls';

FS.rename(uploadedPath, dstPath, function(err) {

if (err) {

var errcode = {result: 'INVALID_PARAM'};

res.send(errcode);

console.log('rename error: ' + err);

return;

} else {

console.log('rename ok');

}

})

}

});

};追问我需要接收的是表单提交的文本数据和文件,怎么办呢

HTTP请求中的form data和request payload的区别

区别就是:

当POST请求的请求头里设置Content-Type: application/x-www-form-urlencoded(默认), 参数在请求体以标准的Form Data的形式提交,以&符号拼接,参数格式为key=value&key=value&key=value

当使用AJAX原生POST请求,请求头里设置Content-Type:application/json,请求的参数会显示在Request Payload中,参数格式为JSON格式:{“key”:”value”,”key”:”value”…},这种方式可读性会更好。

拓展资料:

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

参考资料:

HTTP—百度百科


  • 本文相关:
  • js中使用formdata上传文件、图片的方法
  • javascript将base64图片转换成formdata并通过ajax提交的实现方法
  • js formdata上传文件的设置方法
  • js使用formdata实现批量上传
  • vuejs使用formdata实现ajax上传图片文件
  • ajax+formdata+javascript实现无刷新表单信息提交
  • angular js文件上传之form-data
  • js动态在form上插入enctype=multipart/form-data的问题
  • nodejs form-data格式传输文件的方法
  • vue axios 将传递的json数据转为form data的例子
  • layui的table单击行勾选checkbox功能方法
  • 微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解
  • 小程序从手动埋点到自动埋点的实现方法
  • javascript插件tab选项卡效果
  • 前端路由&webpack基础配置详解
  • 详谈es6中的迭代器(iterator)和生成器(generator)
  • 基于javascript实现类名的添加与移除
  • 浅谈react 属性和状态的一些总结
  • js实现判断滚动条滚到页面底部并执行事件的方法
  • javascript 数组排序与对象排序的实例
  • 使用formdata对象引入哪个js
  • formdata不能直接存对象数组吗
  • FormData在哪里导HTML.js
  • nodejs解析FormData发送过来的表单数据,下图是nod...
  • HTTP请求中的form data和request payload的区别
  • 后台怎么取得js中new formdata封装的数据
  • js 模拟POST提交enctype="multipart/form-data"类...
  • js里getFormData是什么
  • 怎么用node.js的request模块发送formdata
  • 如何修改swfupload.js,formdata中的文件name值?
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved