FormData

作者: 陈大事_code | 来源:发表于2019-06-04 11:42 被阅读0次

    FormData专门为xhr进行服务,为序列化表以及表单格式的xhr上传提供了极大的便利。
    如:

    var xhr = new XMLHttpRequest();
    xhr.open("post","login");
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xhr.send(formData);
    

    构造方法

    1. 直接创建空对象

      var formData = new FormData()    // 创建空对象
      formData.append('id','2')        // 添加数据
      formData.set('id','1')           // 修改数据
      formData.getAll('id')            // 获取以id为key,对应的所有value。
      formData.has('id')               // key值是否包含id
      formData.delete('id')            // 删除数据,key下面所有的value
      formData.get('id')               // 取对象
      

      其中,

      formData以key-value的格式来存储数据,一个key可以对应多个value,例如表单复选框。

    2. 利用已有的表单来创建一个实例

      <form id="myForm" action="" method="post">
          <input type="text" name="name">名字
          <input type="password" name="psw">密码
          <input type="submit" value="提交">
      </form>
      
      // 获取页面已有的一个form表单
      var form = document.getElementById("myForm");
      // 用表单来初始化
      var formData = new FormData(form);
      // 我们可以根据name来访问表单中的字段
      var name = formData.get("name"); // 获取名字
      var psw = formData.get("psw"); // 获取密码
      

      其中,

      FormData接受一个form表单dom作为构造函数的参数,来创建一个formdata对象。

    遍历

    formData.append("k1", "v1");
    formData.append("k1", "v2");
    formData.append("k2", "v1");
    
    var i = formData.entries();
    
    i.next(); // {done:false, value:["k1", "v1"]}
    i.next(); // {done:false, value:["k1", "v2"]}
    i.next(); // {done:false, value:["k2", "v1"]}
    i.next(); // {done:true, value:undefined}
    

    其中,

    通过formData.entries()获得一个遍历器,next()来向下遍,done为true,则代表已经遍历结束。

    相关文章

      网友评论

          本文标题:FormData

          本文链接:https://www.haomeiwen.com/subject/rbjlxctx.html