JS FormData對(duì)象使用方法實(shí)例詳解
本文實(shí)例講述了JS FormData對(duì)象使用方法。分享給大家供大家參考,具體如下:
FormData的主要用途有兩個(gè):
1、將form表單元素的name與value進(jìn)行組合,實(shí)現(xiàn)表單數(shù)據(jù)的序列化,從而減少表單元素的拼接,提高工作效率。
2、異步上傳文件
一、創(chuàng)建formData對(duì)象
1、創(chuàng)建一個(gè)空對(duì)象:
//通過FormData構(gòu)造函數(shù)創(chuàng)建一個(gè)空對(duì)象 var formdata=new FormData(); //可以通過append()方法來追加數(shù)據(jù) formdata.append("name","laotie"); //通過get方法對(duì)值進(jìn)行讀取 console.log(formdata.get("name"));//laotie //通過set方法對(duì)值進(jìn)行設(shè)置 formdata.set("name","laoliu"); console.log(formdata.get("name"));//laoliu
2、通過表單對(duì)formData進(jìn)行初始化
創(chuàng)建表單:
<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">優(yōu)品精選廣告</option> </select></p> <p><input type="button" id="btn" value="添加"></p> </form>
通過表單元素作為參數(shù),實(shí)現(xiàn)對(duì)formData的初始化:
//獲得表單按鈕元素 var btn=document.querySelector("#btn"); //為按鈕添加點(diǎn)擊事件 btn.onclick=function(){ //根據(jù)ID獲得頁面當(dāng)中的form表單元素 var form=document.querySelector("#advForm"); //將獲得的表單元素作為參數(shù),對(duì)formData進(jìn)行初始化 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)來獲取相對(duì)應(yīng)的值
// 獲取key為age的第一個(gè)值 formdata.get("age"); // 獲取key為age的所有值,返回值為數(shù)組類型 formdata.getAll("age");
2、通過append(key,value)在數(shù)據(jù)末尾追加數(shù)據(jù)
//通過FormData構(gòu)造函數(shù)創(chuàng)建一個(gè)空對(duì)象 var formdata=new FormData(); //通過append()方法在末尾追加key為name值為laoliu的數(shù)據(jù) formdata.append("name","laoliu"); //通過append()方法在末尾追加key為name值為laoli的數(shù)據(jù) formdata.append("name","laoli"); //通過append()方法在末尾追加key為name值為laotie的數(shù)據(jù) formdata.append("name","laotie"); //通過get方法讀取key為name的第一個(gè)值 console.log(formdata.get("name"));//laoliu //通過getAll方法讀取key為name的所有值 console.log(formdata.getAll("name"));//["laoliu", "laoli", "laotie"]
3、通過set(key, value)來設(shè)置修改數(shù)據(jù)
key的值不存在,會(huì)添加一條數(shù)據(jù)
//通過FormData構(gòu)造函數(shù)創(chuàng)建一個(gè)空對(duì)象 var formdata=new FormData(); //如果key的值不存在會(huì)為數(shù)據(jù)添加一個(gè)key為name值為laoliu的數(shù)據(jù) formdata.set("name","laoli"); //通過get方法讀取key為name的第一個(gè)值 console.log(formdata.get("name"));//laoli key的值存在,會(huì)修改對(duì)應(yīng)的value值 //通過FormData構(gòu)造函數(shù)創(chuàng)建一個(gè)空對(duì)象 var formdata=new FormData(); //通過append()方法在末尾追加key為name值為laoliu的數(shù)據(jù) formdata.append("name","laoliu"); //通過append()方法在末尾追加key為name值為laoliu2的數(shù)據(jù) formdata.append("name","laoliu2"); //通過get方法讀取key為name的第一個(gè)值 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的第一個(gè)值 console.log(formdata.get("name"));//laoli //通過getAll方法讀取key為name的所有值 console.log(formdata.getAll("name"));//["laoli"]
4、通過has(key)來
判斷是否存在對(duì)應(yīng)的key值//通過FormData構(gòu)造函數(shù)創(chuàng)建一個(gè)空對(duì)象 var formdata=new FormData(); //通過append()方法在末尾追加key為name值為laoliu的數(shù)據(jù) formdata.append("name","laoliu"); //判斷是否包含key為name的數(shù)據(jù) console.log(formdata.has("name"));//true //判斷是否包含key為age的數(shù)據(jù) console.log(formdata.has("age"));//false
5、通過delete(key)可以刪除數(shù)據(jù)
//通過FormData構(gòu)造函數(shù)創(chuàng)建一個(gè)空對(duì)象 var formdata=new FormData(); //通過append()方法在末尾追加key為name值為laoliu的數(shù)據(jù) formdata.append("name","laoliu"); console.log(formdata.get("name"));//laoliu //刪除key為name的值 formdata.delete("name"); console.log(formdata.get("name"));//null
三、通過XMLHttpRequest發(fā)送數(shù)據(jù)
創(chuàng)建表單:
<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">優(yōu)品精選廣告</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>
發(fā)送數(shù)據(jù):
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代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript操作DOM技巧總結(jié)》、《JavaScript頁面元素操作技巧總結(jié)》、《JavaScript事件相關(guān)操作與技巧大全》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
編寫高性能的JavaScript 腳本的加載與執(zhí)行
把腳本放在body中,當(dāng)瀏覽器遇見<script>標(biāo)簽時(shí), 瀏覽器不知道腳本會(huì)插入文本還是html標(biāo)簽,因此瀏覽器會(huì)停止分析html頁面而去執(zhí)行腳本。2010-04-04js判斷移動(dòng)端橫豎屏視口檢測(cè)實(shí)現(xiàn)的幾種方法
最近做歌一個(gè)小項(xiàng)目,但是要放到我們的app上,然而需要橫豎屏使用不同的樣式,本文就來介紹一下js判斷移動(dòng)端橫豎屏視口檢測(cè)實(shí)現(xiàn)的幾種方法,感興趣的可以了解一下2021-07-07引入JavaScript時(shí)alert彈出框顯示中文亂碼問題
今天在HTML中引入JavaScript文件運(yùn)行時(shí),alert彈出的提示框中文顯示為亂碼,怎么解決此問題呢?下面小編給大家?guī)砹艘隞avaScript時(shí)alert彈出框顯示中文亂碼問題的解決方法,一起看看吧2017-09-09js中document.write使用過程中的一點(diǎn)疑問解答
本文為大家介紹下為何如果在頁面加載完后如果調(diào)用document.write就會(huì)覆蓋整個(gè)文檔2014-03-03JavaScript數(shù)據(jù)類型轉(zhuǎn)換的注意事項(xiàng)
JavaScript是一種無類型語言,但同時(shí)JavaScript提供了一種靈活的自動(dòng)類型轉(zhuǎn)換的處理方式?;疽?guī)則是,如果某個(gè)類型的值用于需要其他類型的值的環(huán)境中,JavaScript就自動(dòng)將這個(gè)值轉(zhuǎn)換成所需要的類型。2016-07-07Swiper 4.x 使用方法(移動(dòng)端網(wǎng)站的內(nèi)容觸摸滑動(dòng))
Swiper是純javascript打造的滑動(dòng)特效插件,面向手機(jī)、平板電腦等移動(dòng)終端,這里為大家簡(jiǎn)單介紹一下Swiper4的用法,需要的朋友可以參考下2018-05-05