比较常见的请求方式有get和post,下面对这两种方式做详细介绍
get请求常用于向服务器获取数据,发送请求时,参数被追加到url的末尾。参数以问号开始,名和值之间用等号链接,名值对之间用和号(&)分隔。使用get方式发送的数据常被称作查询字符串
由于url无法识别特殊字符,所以如果数据中包含特殊字符(如中文),则需要使用encodeuricomponent()进行编码
在get请求中,为了避免缓存的影响,可以向url添加一个随机数或时间戳
下面是一个完整的get请求封装示例
post请求常用于向服务器提交数据,它会把数据作为请求的主体提交,post请求的主体可以包含非常多的数据,而且格式不限。
调用xhr.open()方法后,第二步是设置请求头,通常会把<code>content-type</code>设置成<code>application/x-www-form-urlencoded</code>,也就是表单提交时的内容类型
随着前后端分离开发的发展,如果不是提交图片或文件类型的数据,<code>content-type</code>设置为<code>application/json</code>更常用
如果多次调用setrequestheader(),这些值会被依次添加到请求头中,即使设置的值是相同的
post数据的格式与查询字符串格式相同,名和值之间用等号链接,名值对之间用和号(&)分隔。最后拼接成一个字符串,并使用send()方法发送
由于使用post方式传递数据时,需要设置请求头"content-type",这一步骤能够自动对特殊字符(如中文)进行编码,所以就不再需要使用encodeuricomponent()方法了
post请求主要用于数据提交,相同url的重复post请求从服务器得到的响应可能不同,所以不应该缓存使用post方法的请求
下面是一个post请求的封装示例
把get请求和post请求完整的封装为ajax函数
使用示例
重点说明:get请求的参数默认是不会对中文进行编码的,要开发者手动编码;post请求浏览器会自动进行编码。