前面的話
現(xiàn)代Web應(yīng)用中頻繁使用的一項功能就是表單數(shù)據(jù)的序列化,XMLHttpRequest 2級為此定義了FormData類型。FormData為序列化表單以及創(chuàng)建與表單格式相同的數(shù)據(jù)提供了便利。本文將先介紹表單編碼,然后過渡到表單序列化,最后引出FormData的核心概念
表單編碼
當(dāng)用戶提交表單時,表單中的數(shù)據(jù)(每個表單元素的名字和值)編碼到一個字符串中并隨請求發(fā)送。默認情況下,HTML表單通過POST方法發(fā)送給服務(wù)器,而編碼后的表單數(shù)據(jù)則用做請求主體
對表單數(shù)據(jù)使用的編碼方案相對簡單:對每個表單元素的名字和值執(zhí)行普通的URL編碼(使用十六進制轉(zhuǎn)義碼替換特殊字符),使用等號把編碼后的名字和值分開,并使用"&"符號分開名/值對。一個簡單表單的編碼如下所示
find=pizza&zipcode=01234&radius=1km
表單數(shù)據(jù)編碼格式有一個正式的MIME類型
application/x-www-form-urlencoded
當(dāng)使用POST方法提交這種順序的表單數(shù)據(jù)時,必須"Content-Type"請求頭為這個值
[注意]這種類型的編碼并不需要HTML表單,在Ajax應(yīng)用中,希望發(fā)送給服務(wù)器的很可能是一個javascript對象
前面展示的數(shù)據(jù)變成javascript對象的表單編碼形式可能是:
網(wǎng)友評論