Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲国产精品第一页,一区二区在线视频观看,一级毛片在线观看视频

          整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢(xún)熱線:

          JavaScript FormData 對(duì)象

          JavaScript FormData 對(duì)象

          面的代碼創(chuàng)建了一個(gè)空的 FormData 對(duì)象:

          var formData=new FormData(); // Currently empty


          FormData.append()

          FormData 接口的 append() 方法會(huì)添加一個(gè)新值到 FormData 對(duì)象內(nèi)的一個(gè)已存在的鍵中, 如果鍵不存在則會(huì)添加該鍵。


          你可以通過(guò) FormData.append 往對(duì)象里加入鍵值對(duì):

          formData.append('username', 'Chris');
          formData.append('userpic', myFileInput.files[0], 'chris.jpg');

          跟常規(guī)表單數(shù)據(jù)一樣,你可以使用同一個(gè)名稱(chēng)添加多個(gè)值 。例如 (為了與PHP命名習(xí)慣一致在名稱(chēng)中添加了[]):

          formData.append('userpic[]', myFileInput1.files[0], 'chris1.jpg');
          formData.append('userpic[]', myFileInput2.files[0], 'chris2.jpg');

          實(shí)例: 如何清空FormData對(duì)象的數(shù)據(jù)?

          現(xiàn)功能介紹:在使用form表單上傳圖片時(shí),將上傳圖片縮略圖顯示在上傳圖片控件內(nèi)的方法

          HTML區(qū):
          
          <div class="form-group">
                <label for="avatar">頭像<img class="avatar" width="80px" height="80px"
                 src="{% static 'image/head/default.png' %}"
                           alt="圖片未加載出"></label>
                 <input type="file" id="avatar" style="display: none">
          </div>
          
          
          JS代碼區(qū)
          
          <script>
              {#替換頭像位置圖片方法#}
              $('#avatar').change(function () {
                      {#jquery對(duì)象轉(zhuǎn)換為DOM對(duì)象#}
                      var choose_file=$(this)[0].files[0];
                      {#創(chuàng)建一個(gè)閱讀器對(duì)象#}
                      var reader=new FileReader();
                      {#讀取choose_file的文件對(duì)象#}
                      reader.readAsDataURL(choose_file);
                      {#上面代碼加載完再運(yùn)行函數(shù)內(nèi)代碼(原因:圖片未加載完下面的代碼就有可能執(zhí)行完了)#}
                      reader.onload=function () {
                          {# 路徑的值在reader.result中#}
                          $('.avatar').attr("src", reader.result)
                      }
                  }
              )
          </script>

          PS:注意務(wù)必要引入jQuery樣式

          最終結(jié)果顯示


          #python##Python入門(mén)推薦#

          . 概述

          FormData類(lèi)型其實(shí)是在XMLHttpRequest 2級(jí)定義的,它是為序列化表以及創(chuàng)建與表單格式相同的數(shù)據(jù)(當(dāng)然是用于XHR傳輸)提供便利。

          2. 構(gòu)造函數(shù)

          創(chuàng)建一個(gè)formData對(duì)象實(shí)例有幾種方式

          1、創(chuàng)建一個(gè)空對(duì)象實(shí)例

          var formData=new FormData();

          此時(shí)可以調(diào)用append()方法來(lái)添加數(shù)據(jù)

          2、使用已有的表單來(lái)初始化一個(gè)對(duì)象實(shí)例

          假如現(xiàn)在頁(yè)面已經(jīng)有一個(gè)表單

          <form id="myForm" action="" method="post">
              <input type="text" name="name">名字
              <input type="password" name="psw">密碼
              <input type="submit" value="提交">
          </form>

          我們可以使用這個(gè)表單元素作為初始化參數(shù),來(lái)實(shí)例化一個(gè)formData對(duì)象

          // 獲取頁(yè)面已有的一個(gè)form表單
          var form=document.getElementById("myForm");
          // 用表單來(lái)初始化
          var formData=new FormData(form);
          // 我們可以根據(jù)name來(lái)訪問(wèn)表單中的字段
          var name=formData.get("name"); // 獲取名字
          var psw=formData.get("psw"); // 獲取密碼
          // 當(dāng)然也可以在此基礎(chǔ)上,添加其他數(shù)據(jù)
          formData.append("token","kshdfiwi3rh");

          3. 操作方法

          首先,我們要明確formData里面存儲(chǔ)的數(shù)據(jù)形式,一對(duì)key/value組成一條數(shù)據(jù),key是唯一的,一個(gè)key可能對(duì)應(yīng)多個(gè)value。如果是使用表單初始化,每一個(gè)表單字段對(duì)應(yīng)一條數(shù)據(jù),它們的HTML name屬性即為key值,它們value屬性對(duì)應(yīng)value值。

          3.1 獲取值

          我們可以通過(guò)get(key)/getAll(key)來(lái)獲取對(duì)應(yīng)的value,

          formData.get("name"); // 獲取key為name的第一個(gè)值
          formData.get("name"); // 返回一個(gè)數(shù)組,獲取key為name的所有值

          3.2 添加數(shù)據(jù)

          我們可以通過(guò)append(key, value)來(lái)添加數(shù)據(jù),如果指定的key不存在則會(huì)新增一條數(shù)據(jù),如果key存在,則添加到數(shù)據(jù)的末尾

          formData.append("k1", "v1");
          formData.append("k1", "v2");
          formData.append("k1", "v1");
          
          formData.get("k1"); // "v1"
          formData.getAll("k1"); // ["v1","v2","v1"]

          3.3 設(shè)置修改數(shù)據(jù)

          我們可以通過(guò)set(key, value)來(lái)設(shè)置修改數(shù)據(jù),如果指定的key不存在則會(huì)新增一條,如果存在,則會(huì)修改對(duì)應(yīng)的value值。

          formData.append("k1", "v1");
          formData.set("k1", "1");
          formData.getAll("k1"); // ["1"]

          3.4 判斷是否該數(shù)據(jù)

          我們可以通過(guò)has(key)來(lái)判斷是否對(duì)應(yīng)的key值

          formData.append("k1", "v1");
          formData.append("k2",null);
          
          formData.has("k1"); // true
          formData.has("k2"); // true
          formData.has("k3"); // false

          3.5 刪除數(shù)據(jù)

          通過(guò)delete(key),來(lái)刪除數(shù)據(jù)

          formData.append("k1", "v1");
          formData.append("k1", "v2");
          formData.append("k1", "v1");
          formData.delete("k1");
          
          formData.getAll("k1"); // []

          3.6 遍歷

          我們可以通過(guò)entries()來(lái)獲取一個(gè)迭代器,然后遍歷所有的數(shù)據(jù),

          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:fase, value:["k1", "v2"]}
          i.next(); // {done:fase, value:["k2", "v1"]}
          i.next(); // {done:true, value:undefined}

          可以看到返回迭代器的規(guī)則

          1. 每調(diào)用一次next()返回一條數(shù)據(jù),數(shù)據(jù)的順序由添加的順序決定
          2. 返回的是一個(gè)對(duì)象,當(dāng)其done屬性為true時(shí),說(shuō)明已經(jīng)遍歷完所有的數(shù)據(jù),這個(gè)也可以作為判斷的依據(jù)
          3. 返回的對(duì)象的value屬性以數(shù)組形式存儲(chǔ)了一對(duì)key/value,數(shù)組下標(biāo)0為key,下標(biāo)1為value,如果一個(gè)key值對(duì)應(yīng)多個(gè)value,會(huì)變成多對(duì)key/value返回

          我們也可以通過(guò)values()方法只獲取value值

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

          4. 發(fā)送數(shù)據(jù)

          我們可以通過(guò)xhr來(lái)發(fā)送數(shù)據(jù)

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

          這種方式可以來(lái)實(shí)現(xiàn)文件的異步上傳。

          5. 其他

          瀏覽器兼容性查詢(xún):https://caniuse.com/#search=formdata

          英文文檔:https://developer.mozilla.org/en-US/docs/Web/API/FormData


          轉(zhuǎn)自:https://segmentfault.com/a/1190000006716454


          主站蜘蛛池模板: 欧美日韩精品一区二区在线观看 | 无码精品人妻一区| 另类国产精品一区二区| 久久精品国产一区二区三| 另类ts人妖一区二区三区| 久久久久99人妻一区二区三区| 国产成人精品一区二三区| 高清一区二区在线观看| 无码日韩精品一区二区人妻| 日韩美一区二区三区| 午夜视频一区二区| 三上悠亚精品一区二区久久| 日美欧韩一区二去三区| 99精品一区二区三区无码吞精| 无码一区二区三区视频| 91在线看片一区国产| 国产精品一区二区久久精品| 韩国美女vip福利一区| 亚洲色精品三区二区一区| 国产精品无码一区二区在线观| 日本一区二区三区不卡视频| 日韩在线一区视频| 一区二区3区免费视频| 国产综合一区二区在线观看| 免费一区二区三区| 精品无码一区二区三区在线| 国产麻豆精品一区二区三区| 午夜无码视频一区二区三区| 任你躁国产自任一区二区三区| 波霸影院一区二区| 中文字幕一区二区视频| 国产成人亚洲综合一区| 色噜噜一区二区三区| 久久久久久综合一区中文字幕 | 成人在线观看一区| 国产Av一区二区精品久久| 日本一区二区三区不卡在线视频| 国产伦精品一区二区三区无广告 | 国产福利在线观看一区二区| 中文字幕在线视频一区| 亚洲熟女乱色一区二区三区|