XMLHttpRequest(xhr)方法详解

XMLHttpRequest(XHR)从微软浏览器的接口演变为W3C标准,经历了Level 1到Level 2的发展。Level 2引入了跨域请求、二进制数据支持、进度信息和超时设置等功能。通过新建XMLHttpRequest对象、open方法、添加侦听器、设置请求头和send方法,实现与服务端的通信。此外,还介绍了abort()方法用于终止请求,以及timeout事件和xhr.timeout属性用于处理请求超时。
摘要由CSDN通过智能技术生成

XMLHttpRequest

发展历程

  XMLHttpRequest一开始只是微软浏览器提供的一个接口,后来各大浏览器纷纷效仿也提供了这个接口,再后来W3C对它进行了标准化,提出了XMLHttpRequest标准。XMLHttpRequest标准又分为Level 1和Level 2。

  • XMLHttpRequest Level 1主要存在以下缺点:

1、受同源策略的限制,不能发送跨域请求;
2、不能发送二进制文件(如图片、视频、音频等),只能发送纯文本数据;
3、在发送和获取数据的过程中,无法实时获取进度信息,只能判断是否完成;

  • Level 2中新增了以下功能:

1、可以发送跨域请求,在服务端允许的情况下;
2、支持发送和接收二进制数据;
3、新增formData对象,支持发送表单数据;
4、发送和获取数据时,可以获取进度信息;
5、可以设置请求的超时时间;

如何与服务端通信

我们与服务器通信的API就是XMLHttpRequest。
1、新建XMLHttpRequest对象

var xhr=new XMLHttpRequest();
//IE 7以下: 
var xhr=new ActiveXObject("Microsoft.XMLHTTP");

2、打开要发送的地址通道。

xhr.open(“GET”,地址,同步/异步);

open方法的参数主要包括:
  DOMString method
  DOMString url
  optional boolean async
  optional DOMString user
  optional DOMString password

3、给XMLHttpRequest对象增加侦听器,用来侦听各种情况,包括各种链接状态

xhr.addEventListener(“load”,侦听函数)发送数据给打开的地址,

4、如果有必要的话可以添加请求头

xhr.setRequestHeader(“content-type”,”application/x-www-form-urlencoded”)

 大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说Content-Length必须出现。

5、如果没有要发送的内容直接send()

xhr.send();

send(ArrayBuffer data);类型化数组
send(Blob data);二进制大对象,是一个可以存储二进制文件的容器。
send(Document data); 文档对象
send(DOMString? data); 文本数据
send(FormData data); 数据对象,可以直接封装内容

其他方法:

6、abort()
 该方法将终止请求,如果该请求已被发出。当一个请求被终止,它的 readyState 属性将被置为0( UNSENT ),但是并不触发 readystatechange 事件。

7、timeout事件
当进度由于预定时间到期而终止时,会触发timeout 事件。

 xhr.addEventListener(“timeout”,timeoutHandler);

8、xhr.timeout = 2000(必须设置在open以后,send之前)

 一个无符号长整型数,代表着一个请求在被自动终止前所消耗的毫秒数。默认值为 0,意味着没有超时。超时并不应该用在一个 document environment 中的同步 XMLHttpRequests 请求中,否则将会抛出一个 InvalidAccessError 类型的错误。当超时发生, timeout 事件将会被触发。

9、FormData

var formData = new FormData();
formData.append("username", "zhangsan");
formData.append("age", "18");
request.send(formData);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值