前面的話
現(xiàn)代Web應(yīng)用中頻繁使用的一項(xiàng)功能就是表單數(shù)據(jù)的序列化,XMLHttpRequest 2級(jí)為此定義了FormData類(lèi)型。FormData為序列化表單以及創(chuàng)建與表單格式相同的數(shù)據(jù)提供了便利。本文將先介紹表單編碼,然后過(guò)渡到表單序列化,最后引出FormData的核心概念
表單編碼
當(dāng)用戶提交表單時(shí),表單中的數(shù)據(jù)(每個(gè)表單元素的名字和值)編碼到一個(gè)字符串中并隨請(qǐng)求發(fā)送。默認(rèn)情況下,HTML表單通過(guò)POST方法發(fā)送給服務(wù)器,而編碼后的表單數(shù)據(jù)則用做請(qǐng)求主體
對(duì)表單數(shù)據(jù)使用的編碼方案相對(duì)簡(jiǎn)單:對(duì)每個(gè)表單元素的名字和值執(zhí)行普通的URL編碼(使用十六進(jìn)制轉(zhuǎn)義碼替換特殊字符),使用等號(hào)把編碼后的名字和值分開(kāi),并使用"&"符號(hào)分開(kāi)名/值對(duì)。一個(gè)簡(jiǎn)單表單的編碼如下所示
find=pizza&zipcode=01234&radius=1km
表單數(shù)據(jù)編碼格式有一個(gè)正式的MIME類(lèi)型
application/x-www-form-urlencoded
當(dāng)使用POST方法提交這種順序的表單數(shù)據(jù)時(shí),必須"Content-Type"請(qǐng)求頭為這個(gè)值
[注意]這種類(lèi)型的編碼并不需要HTML表單,在Ajax應(yīng)用中,希望發(fā)送給服務(wù)器的很可能是一個(gè)javascript對(duì)象
前面展示的數(shù)據(jù)變成javascript對(duì)象的表單編碼形式可能是:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26