FormData
FormData對象用以將數據編譯成鍵值對,以便用XMLHttpRequest
來發送數據。其主要用於發送表單數據,但亦可用於發送帶鍵數據(keyed data),而獨立於表單使用。如果表單enctype
屬性設為multipart/form-data ,則會使用表單的submit()
方法來發送數據,從而,發送數據具有同樣形式。
創建 FormData 對象
調用 append() 方法添加字段
var formData = new FormData(); formData.append("username", "Groucho"); formData.append("accountnum", 123456); //數字123456會被立即轉換成字符串 "123456"
FormData 與 Object 的區分
都是 Object 的成員,可以理解為二者的格式不同。
formData是一種數據格式,和JSON類似。不過 js 的 Object中目前還不包含 JSON 這種格式。
常見的 Content-Type 類型
http協議是以ASCII碼傳輸,建立在TCP/IP協議之上的應用層規范;
該規范把HTTP請求分為三個部分:狀態行、請求頭、消息主體。
在使用post進行請求的時候,數據發送出去,只有當瀏覽器解析成功才具有意義。
對於一般的服務器語言,例如php、python等都內置了自動解析常見數據格式的功能;而服務器是根據請求頭 headers 中的 content-type
(1)application/x-www-form-urlencode
瀏覽器的原生form表單,如果不設置 enctype 屬性,最終將會以application/x-www-form-urlencode方式提交數據;像jquery、Qwrap的ajax,content-type默認值都是 application/x-www-form-urlencode
(2)multipart/form-data
利用表單長傳文件的時候,必須讓 form 的 enctyped 等於這個值;這個格式一般是用來上傳文件的,各大服務端語言對他也有着良好的支持
常見的媒體格式類型如下:
- text/html : HTML格式
- text/plain :純文本格式
- text/xml : XML格式
- image/gif :gif圖片格式
- image/jpeg :jpg圖片格式
- image/png:png圖片格式
以application開頭的媒體格式類型:
- application/xhtml+xml :XHTML格式
- application/xml : XML數據格式
- application/atom+xml :Atom XML聚合格式
- application/json : JSON數據格式
- application/pdf :pdf格式
- application/msword : Word文檔格式
- application/octet-stream : 二進制流數據(如常見的文件下載)
- application/x-www-form-urlencoded : <form encType=””>中默認的encType,form表單數據被編碼為key/value格式發送到服務器(表單默認的提交數據的格式)