x-www-form-urlencoded
當用戶通過form表單提交數據的時候,例如:
<form method="post"action="http://api.test.com/user" >
<inputtype="text" name="name">
<inputtype="text" name="age">
</form>
提交時會向服務器端發出這樣的數據(已經去除部分不相關的頭信息),數據如下:
POST /user HTTP/1.1
Content-Type:application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: api.test.com
Content-Length: 21
Connection: Keep-Alive
Cache-Control: no-cache
name=互扯程序&age=18
它的Content-Type是application/x-www-form-urlencoded,這表示消息內容會經過URL編碼
form-data
當需要上傳文件(可以上傳多個文件),並且有參數同時傳遞的時候,選擇這個選項可以上傳文件。
舉個例子
<form method="post"action="http://api.test.com/user/upload.do" enctype=”multipart/form-data”>
<inputtype="text" name="desc">
<inputtype="file" name="pic">
</form>
瀏覽器將會發送以下數據:
POST /user/upload.do HTTP/1.1
Accept-Language: zh-cn,zh;q=0.5
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Content-Length: 60408
Content-Type:multipart/form-data; boundary=ZnGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC
Host: api.test.com
我們看到Content-Type:multipart/form-data;
當需要上傳數據的時候,必須設置enctype=“multipart/form-data”,
enctype:規定在發送到服務器之前應該如何對表單數據進行編碼,他有如下的三個值:
1. application/x-www-form-urlencoded。默認的編碼方式。所有字符都會進行編碼(空格轉換為 "+" 加號,特殊符號轉換為 ASCII HEX 值)。
2. multipart/form-data 。 指定傳輸數據為二進制類型,比如圖片、mp3、文件。 不對字符編碼。在使用包含文件上傳控件的表單時,必須使用該值。
3. text/plain。純文體的傳輸。空格轉換為 “+” 加號,但不對特殊字符編碼。
其實form表單在你不寫enctype屬性時,也默認為其添加了enctype屬性值,默認值是enctype="application/x- www-form-urlencoded",所以上面注冊用戶的時候雖然沒寫,其實默認加上了。
raw
當需要給服務端傳遞json,xml等數據的時候選擇raw,當選擇了raw的時候,header里會自動加上
Content-Type: application/json
例如:
$.ajax({
url:"/user/",
data:JSON.stringify(user),
method:"POST",
contentType:"application/json",
success: function(res){
console.info("添加成功")
}
});
binary
只能上傳一個文件,也不能添加參數。