我的编程空间,编程开发者的网络收藏夹
学习永远不晚

FormData的主要用处及实例用法介绍

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

FormData的主要用处及实例用法介绍

本篇内容主要讲解“FormData的主要用处及实例用法介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“FormData的主要用处及实例用法介绍”吧!

我们打印这个构造函数看一眼

ƒ FormData()

    arguments: null

    caller: null

    length: 0

    name: "FormData"

    prototype: FormData

    append: ƒ append()

    delete: ƒ delete()

    entries: ƒ entries()

    forEach: ƒ forEach()

    get: ƒ ()

    getAll: ƒ getAll()

    has: ƒ has()

    keys: ƒ keys()

    set: ƒ ()

    values: ƒ values()

    constructor: ƒ FormData()

    Symbol(Symbol.iterator): ƒ entries()

    Symbol(Symbol.toStringTag): "FormData"

    __proto__: Object

    __proto__: ƒ ()

    [[Scopes]]: Scopes[0]

通过打印并查看formData的结构,可以发现该接口对象本身非常简单。在formData构造函数原型对象上只有append、forEach、keys等少数方法。

FormData的主要用处

网络请求中处理表单数据 网络请求中处理用来异步的上传文件

FormData 实例的创建

◆ new FormData ( HTMLFormElement: ele)

在使用FormData构造函数创建实例对象的时候,可以传递一个HTML表单元素,该表单元素允许是任何形式的表单控件,包括文件输入框、复选框等。

<form name="formTest">

    <input type="text" placeholder="请输入用户名" name="user" value="wendingding">

    <input type="password" placeholder="请输入密码" name="pass" value="123456789"></form>

//列出创建formData实例对象的几种方式//001 通过构造函数创建不传递任务参数var formData1 = new FormData();   //空的实例对象//通过调用对象的方法来设置数据(模拟表单)//设置数据formData1.set("name","文顶顶");formData1.set("email","wendingding_ios@126.com");formData1.set("friends","熊大");

    //设置数据(追加)formData1.append("friends","光头强");formData1.append("friends","萝卜头");

    //查看实例数据formData1.forEach(function(value,key){

    console.log(key,value);})console.log("----------------------------------");//002 获取表单标签传递给FormData构造函数var formData2 = new FormData(document.getElementById("formTest"))formData2.forEach(function(value,key){

    console.log(key,value);})

注意:表单标签必须要添加name属性才能获取其数据

说明: 在上面的示例代码中介绍了两种创建(获取)formData实例对象的方式,可以先创建一个空的实例对象也可以直接通过页面中的表单标签来进行初始化处理。

formData数据装填好之后,可以直接通过ajax方法提交到服务器端,下面给出上面代码的执行结果。

FormData 的主要方法

FormData的主要用处及实例用法介绍

如上图所示,FormData构造函数的原型对象上面定义了一堆方法。这些方法使用方式都很简单,接下来我们通过代码的方式简单介绍他们。

 //01 创建空的formData实例对象    var data = new FormData();

    //02 设置数据(添加)    data.set("age",18);

    data.set("name","LiuY");

    data.set("type","法师");

    data.set("address","泉水中心");

    //03 设置数据(修改和删除)    data.set("name","MiTaoer");

    data.delete("address");

    //04 设置数据(追加)    data.append("type","战士");

    data.append("type","辅助");===========================================

    //05 读取数据(指定key-one)    console.log(data.get("name"));          //MiTaoer    console.log(data.get("type"));          //法师

    //06 读取数据(指定key-All)    console.log(data.getAll("type"));       //["法师", "战士", "辅助"]    

    //07 检查是否拥有指定的key    console.log(data.has("age"));           //true    console.log(data.has("email"));         //false

    //08 迭代器的基本使用(keys)    var keyIterator = data.keys()      //获取迭代器对象    console.log(keyIterator.next());   //{done: false, value: "age"}    console.log(keyIterator.next());   //{done: false, value: "name"}    console.log(keyIterator.next());   //{done: false, value: "type"}    console.log(keyIterator.next());   //{done: false, value: "type"}    console.log(keyIterator.next());   //{done: false, value: "type"}    console.log(keyIterator.next());   //{done: true, value: undefined}    

    console.log("___________________");

    //09 迭代器的基本使用(values)    var valueIterator = data.values();  //获取迭代器对象    console.log(valueIterator.next());  //{done: false, value: "18"}    console.log(valueIterator.next());  //{done: false, value: "MiTaoer"}    console.log(valueIterator.next());  //{done: false, value: "法师"}    console.log(valueIterator.next());  //{done: false, value: "战士"}    console.log(valueIterator.next());  //{done: false, value: "辅助"}    console.log(valueIterator.next());  //{done: true, value: undefined}

    //10 迭代器的基本使用(entries)    console.log(data.entries().next());     //{done: false, value: ["age", "18"]}

    //11 formData对象的遍历    data.forEach(function(value,key){

        //输出结果        // age 18        // name MiTaoer        // type 法师        // type 战士        // type 辅助        console.log(key,value);

    })

代码说明

formData 对象的这些方法其实不用进行过多的赘述,上面的代码和说明简单易懂。总体上来说,它提供了一整套的操作数据的方法囊括了添加(set)、修改、查询和删除等操作,append方法和set方法的不同之处在于它不会覆盖而是以数组push的方式来处理同名的数据。

formData 对象的keys()、values()和entries()方法使用类似,调用后将得到一个Iterator类型的迭代器对象,该对象能够能够调用next()方法来进行迭代操作,打印结果中的done使用布尔类型的值来进行标记,如果迭代结束那么值为true

formData 对象的forEach()接收一个回调函数参数,其中第一个参数为当前遍历数据的value值,第二个参数为key(同数组的forEach方法一致)。如果是Ajax发送GET请求,需要通过formData的方式来提交表单数据,那么可以借助该方法来拼接查询字符串。

FormData的典型用法这里给定如下的表单数据,然后介绍如何使用FormData来处理表单数据发送GET和POST请求。

<form name="formTest">

    <input type="text" name="user" placeholder="请输入用户名"><br>

    <input type="text" name="email" placeholder="请输入邮箱"><br>

    <input type="password" name="pass" placeholder="请输入密码"><br>

    <input type="checkbox" name="check"> 是否勾选<br></form><button>提交表单数据</button>```<div style='background:#195;color:#fff;width:120px;text-align:center'>**GET请求**</div>

    //01 获取页面中的btn标签    var oBtn = document.getElementsByTagName("button")[0];

    //02 给按钮标签添加点击事件    oBtn.onclick = function(){

        //03 使用Ajax发送GET请求        var xhr = new XMLHttpRequest();

        xhr.open("GET","http://127.0.0.1:3000?"+getData(),true);

        xhr.send();

        xhr.onreadystatechange = function(){

            if(xhr.status >= 200 && xhr.status <=300 || xhr.status == 304)

            {

                console.log("请求成功"+xhr.responseText);

            }else{

                console.log("请求失败"+xhr.statusText);

            }

        }

    }

    //获取页面中的表单数据并处理为查询字符串    function getData(){

        var arr = [];

        var data = new FormData(document.forms.namedItem("formTest"));

        data.append("age",18);

        data.forEach(function(value,key){

            arr.push(key+"="+value);

        })

        return arr.join("&");

    }

通过上面的代码示例可以发现,使用formData来处理表单数据发送GET请求并没有什么优势,也需要通过循环来处理然后把键值对转换为查询字符串的形式拼接在URL字符串的后面。

POST请求

    //01 获取页面中的btn标签    var oBtn = document.getElementsByTagName("button")[0];

    //02 给按钮标签添加点击事件    oBtn.onclick = function(){

        //03 处理参数        //方式(1) 模拟表单数据        var data = new FormData();

        data.set("name","文顶顶");

        data.set("color","red");

        data.set("email","yangyong@520it.com");

        data.append("email","wendingding_ios@126.com");

        //方式(2) 获取表单数据        //var data = new FormData(document.forms.namedItem("formTest"));

        //04 使用Ajax发送GET请求        var xhr = new XMLHttpRequest();

        xhr.open("POST","http://127.0.0.1:3000",true);

        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

        xhr.send(data);

        xhr.onreadystatechange = function(){

            if(xhr.status >= 200 && xhr.status <=300 || xhr.status == 304)

            {

                console.log("请求成功"+xhr.responseText);

            }else{

                console.log("请求失败"+xhr.statusText);

            }

        }

    }

如果发送的是POST请求,那么提交表单数据需要通过setRequestHeader方法来设置'Content-Type', 'application/x-www-form-urlencoded',而formData数据直接作为send方法的参数来进行提交即可。POST请求通过formData提交给服务器端的数据,如果是Node服务器端则很难处理(同文件一样)。formData最主要的用途其实是用来异步的进行文件上传。

POST请求进行文件上传

<form>

    <input type="text" name="user" id="userID">

    <input type="file" name="file-name" id="fileID" multiple></form><button>上传文件</button>

    //01 获取页面中的btn标签    var oBtn    = document.getElementsByTagName("button")[0];

    var oUser   = document.getElementById("userID");

    var oFileID = document.getElementById("fileID");

    //02 给按钮标签添加点击事件    oBtn.onclick = function(){

        //03 获取表单中的文件内容        var data = new FormData();

        data.set("user",oUser.value);

        Array.from(oFileID.files).forEach(function(file){

            data.append("fileName",file);

        })

        //04 使用Ajax发送GET请求        var xhr = new XMLHttpRequest();

        xhr.open("POST","http://127.0.0.1:5000/api",true);

        xhr.send(data);

        xhr.onreadystatechange = function(){

            if(xhr.status >= 200 && xhr.status <=300 || xhr.status == 304)

            {

                console.log("请求成功"+xhr.responseText);

            }else{

                console.log("请求失败"+xhr.statusText);

            }

        }

    }

这里顺便贴出测试文件上传写的Node代码以及文件上传后的监听结果。

//备注:node文件名称为uploadServer.js//01 导入模块(需先通过npm来进行安装)var express   =   require('express');     var multer    =   require('multer');         var body      =   require('body-parser'); var app = express();app.listen(5000);app.use(body.urlencoded( { extended: false } ));app.use(multer( { dest: './upload/' } ).any());//02 监听网络请求并设置打印接收到的参数信息app.post('/api', function (req,res){

    res.setHeader('Access-Control-Allow-Origin', '*');

    res.send("Nice ! 上传成功 ~ ");    console.log(req.body);      //普通POST数据    console.log(req.files);     //文件POST数据});app.use(express.static('./html/'));

代码说明 需要先通过npm install express multer body-parser命令在当前路径中安装对应的模块。

wendingding$ node uploadServer.js

{ user: 'wen' }

[ { fieldname: 'fileName',

    originalname: 'formData.png',

    encoding: '7bit',

    mimetype: 'image/png',

    destination: './upload/',

    filename: 'f416da3b522ece9e4cc2eccd5b7a62e8',

    path: 'upload/f416da3b522ece9e4cc2eccd5b7a62e8',

    size: 50002 },

  { fieldname: 'fileName',

    originalname: 'Snip20190107_1.png',

    encoding: '7bit',

    mimetype: 'image/png',

    destination: './upload/',

    filename: '2a2dd60e217b9cc08f2cc0048a1d27ab',

    path: 'upload/2a2dd60e217b9cc08f2cc0048a1d27ab',

    size: 1309894 } ]

到此,相信大家对“FormData的主要用处及实例用法介绍”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

FormData的主要用处及实例用法介绍

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

FormData的主要用处及实例用法介绍

本篇内容主要讲解“FormData的主要用处及实例用法介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“FormData的主要用处及实例用法介绍”吧!我们打印这个构造函数看一眼ƒ FormDat
2023-06-03

SpringBoot中activeMq的用法实例介绍

本篇内容主要讲解“SpringBoot中activeMq的用法实例介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot中activeMq的用法实例介绍”吧!SpringBoot
2023-06-20

Javainterrupt()方法使用实例介绍

一个线程在未正常结束之前,被强制终止是很危险的事情.因为它可能带来完全预料不到的严重后果比如会带着自己所持有的锁而永远的休眠,迟迟不归还锁等。所以你看到Thread.suspend,Thread.stop等方法都被Deprecated了
2023-02-03

python EasyOCR库实例用法介绍

说明 1、EasyOCR是一个用python编写的OCR三方库。可以在python中调用,用来识别图像中的文字,并输出为文本。 2、支持80多种语言的识别,识别精度高,甚至要超过PaddleOCR。 安装命令pip install easy
2022-06-02

SQL Server数据库DATEADD的语法介绍及使用实例

DATEADD函数是SQL Server数据库中的一个内置函数,用于在指定日期上添加或减去指定的时间间隔。语法:DATEADD(datepart, number, date)参数:- datepart:表示要添加或减去的时间间隔的单位,可以
2023-09-23

java guava主要功能介绍及使用心得总结

这篇文章主要为大家介绍了java guava主要功能介绍及使用心得总结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-16

android popwindow实现左侧弹出菜单层及PopupWindow主要方法介绍

PopupWindow可以实现浮层效果,主要方法有:可以自定义view,通过LayoutInflator方法;可以出现和退出时显示动画;可以指定显示位置等。 为了将PopupWindow的多个功能展现并力求用简单的代码实现,编写了一个点击按
2022-06-06

浅析node Async异步处理模块用例分析及常用方法介绍

最近在研究nodejs,令我感受比较深的是……熟悉js代码的地球人都知道,js的加载顺序很重要!很重要!!那么问题来了,在编写node的时候,会在后台去请求很多接口(我们公司是与java后台交接数据的),接口就会有个回调,这么多回调怎么办呢
2022-06-04

SpringBoot整合JWT的介绍以及用法

本篇内容主要讲解“SpringBoot整合JWT的介绍以及用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot整合JWT的介绍以及用法”吧!目录1.JWT2.JWT登录执行流程
2023-06-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录