你需要掌握的Ajax方式提交表单的常见编码类型

JavaScript/前端
365
0
0
2022-04-21
标签   Ajax

前言

用Ajax方式提交表单,决定编码类型的是请求头中Content-Type,不同的值对应不同的提交和回调处理方式。

你需要掌握的Ajax方式提交表单的常见编码类型

考虑的Content-Type类型,共有如下几种:

  • application/x-www-form-urlencoded
  • multipart/form-data
  • text/plain
  • application/json
  • text/xml

application/x-www-form-urlencoded

这种Content-Type要求数据按照key1=value1&key2=value2的格式发送给后端,且其中的特殊字符需要转义成%HH的形式。所以,传数据之前需要用encodeURIComponent()函数编码表单数据,切记。

你需要掌握的Ajax方式提交表单的常见编码类型

multipart/form-data

这种Content-Type类型多用来提交文件,我们采用HTML5的FormData对象来构建提交的数据。FormData对象的浏览器支持情况:

你需要掌握的Ajax方式提交表单的常见编码类型

基本上现代浏览器都支持,IE11以下不支持,不支持的建议用ajaxForm之类的jquery的文件提

你需要掌握的Ajax方式提交表单的常见编码类型


注意,这种类型的发送方式,不能设置请求头部的Content-Type,应交给浏览器来处理。

text/plain

如果请求头部没有设定Content-Type,且数据既不是FormData也不是XML Document(将在xml小节中介绍),则Content-Type默认为text/plain,直接发送字符串即可:

你需要掌握的Ajax方式提交表单的常见编码类型

application/json

JSON格式的数据,后端和各种移动端都很方便处理,用这种MIME类型时,需要将数据对象转换成JSON串。首先,转换数据成JSON串;然后,设定请求头部的Content-Type,就可以发数据了。

你需要掌握的Ajax方式提交表单的常见编码类型

text/xml

目前没有遇到过要用XML的情况,大部分都可用JSON代替。

还有话说

  • multipart/form-data与text/xml不需要设置请求头的Content-Type;
  • 关于method,以上都是POST方式,若是GET方式是没有请求数据体的,数据直接加在URL后面;
  • 接收请求时的解析方式
  1. text/xml:用responseXML
  2. application/json:需要先JSON化,JSON.parse( responseText )
  3. 其他:就直接用responseText