宅男在线永久免费观看网直播,亚洲欧洲日产国码无码久久99,野花社区在线观看视频,亚洲人交乣女bbw,一本一本久久a久久精品综合不卡

全部
常見問題
產(chǎn)品動態(tài)
精選推薦

前端FormData詳解

管理 管理 編輯 刪除

1. 概述

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

2. 構造函數(shù)

創(chuàng)建一個formData對象實例有幾種方式

1、創(chuàng)建一個空對象實例

var formData = new FormData();

此時可以調用append()方法來添加數(shù)據(jù)

2、使用已有的表單來初始化一個對象實例

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

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

我們可以使用這個表單元素作為初始化參數(shù),來實例化一個formData對象

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

3. 操作方法

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

keyvalue
k1[v1,v2,v3]
k2v4

3.1 獲取值

我們可以通過get(key)/getAll(key)來獲取對應的value,

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

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

我們可以通過append(key, value)來添加數(shù)據(jù),如果指定的key不存在則會新增一條數(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ù)據(jù)

我們可以通過set(key, value)來設置修改數(shù)據(jù),如果指定的key不存在則會新增一條,如果存在,則會修改對應的value值。

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

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

我們可以通過has(key)來判斷是否對應的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ù)

通過delete(key),來刪除數(shù)據(jù)

formData.append("k1", "v1");
formData.append("k1", "v2");
formData.append("k1", "v1");
formData.delete("k1");

formData.getAll("k1"); // []

3.6 遍歷

我們可以通過entries()來獲取一個迭代器,然后遍歷所有的數(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. 每調用一次next()返回一條數(shù)據(jù),數(shù)據(jù)的順序由添加的順序決定
  2. 返回的是一個對象,當其done屬性為true時,說明已經(jīng)遍歷完所有的數(shù)據(jù),這個也可以作為判斷的依據(jù)
  3. 返回的對象的value屬性以數(shù)組形式存儲了一對key/value,數(shù)組下標0為key,下標1為value,如果一個key值對應多個value,會變成多對key/value返回

我們也可以通過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ù)

我們可以通過xhr來發(fā)送數(shù)據(jù)

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

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


請登錄后查看

CRMEB-慕白寒窗雪 最后編輯于2023-03-06 14:45:10

快捷回復
回復
回復
回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
排序 默認正序 回復倒序 點贊倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理員 企業(yè)

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
{{item.is_suggest == 1? '取消推薦': '推薦'}}
沙發(fā) 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暫無簡介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打賞
已打賞¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回復' : '回復'}}
刪除
回復
回復

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回復 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打賞
已打賞¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回復' : '回復'}}
刪除
回復
回復
查看更多
打賞
已打賞¥{{reward_price}}
999
{{like_count}}
{{collect_count}}
添加回復 ({{post_count}})

相關推薦

快速安全登錄

使用微信掃碼登錄
{{item.label}} 加精
{{item.label}} {{item.label}} 板塊推薦 常見問題 產(chǎn)品動態(tài) 精選推薦 首頁頭條 首頁動態(tài) 首頁推薦
取 消 確 定
回復
回復
問題:
問題自動獲取的帖子內(nèi)容,不準確時需要手動修改. [獲取答案]
答案:
提交
bug 需求 取 消 確 定
打賞金額
當前余額:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
請輸入 0.1-{{reward_max_price}} 范圍內(nèi)的數(shù)值
打賞成功
¥{{price}}
完成 確認打賞

微信登錄/注冊

切換手機號登錄

{{ bind_phone ? '綁定手機' : '手機登錄'}}

{{codeText}}
切換微信登錄/注冊
暫不綁定
CRMEB客服

CRMEB咨詢熱線 咨詢熱線

400-8888-794

微信掃碼咨詢

CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
返回頂部 返回頂部
CRMEB客服