ajax(chrome)数据提交的4种格式(Form Data, Request Payload)

 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 (不用设置Content-Type,axios可以直接转为FormData)来处理。

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

posted @ 2020-07-30 11:08  全玉  阅读(1472)  评论(0编辑  收藏  举报