ajax POST提交的方式有4種
1. Content-Type: application/x-www-form-urlencoded 2. Content-Type: application/json 3. Content-Type: multipart/form-data 4. Content-Type: text/plain
1. application/x-www-form-urlencoded
此種方式,
1.1 參數為 name=fa&&age=22, 則chrome中顯示為
Form data
name: li
age: 22
1.2 參數為 {name:'fa',age:22}, 則chrome中顯示為
Form data
{"name":"fa","age":"22"}
jquery默認使用此種方式發送數據,傳入的對象格式的參數也會自動格式化為第一種的字符串格式
axios默認采用application/json, 即使設定Content-Type: application/x-www-form-urlencoded,也不會自動
將傳入的對象格式的參數格式化為字符串,會產生1.2形式的參數發送,需要手動進行格式化。
可以使用 Object.keys(obj).reduce((pre,cur) => pre + '&' + cur + '=' + obj[cur],'').slice(1)
或者使用 URLSearchParams 來處理。
2. Content-Type: application/json
2.1 參數格式 {name:'fa',age:22}, 則chrome中顯示為
Request Payload {name: 'fa', age: 22} age: 22 name: 'fa'
Request Payload是json格式參數在chrome中的顯示方式。
3. Content-Type: multipart/form-data
格式如下:
Content-Type: multipart/form-data; boundary=---------------------------314911788813839 -----------------------------314911788813839 Content-Disposition: form-data; name="foo" bar -----------------------------314911788813839 Content-Disposition: form-data; name="baz" The first line. The second line. -----------------------------314911788813839--
FormData格式數據也可以換用Content-Type: multipart/form-data,格式會變成上面的樣子。
4. Content-Type: text/plain
格式如下:
foo=bar baz=The first line. The second line.
參考: https://www.cnblogs.com/ChengWuyi/p/7117060.html
