为了账号安全,请及时绑定邮箱和手机立即绑定

js onreadystatechange 和 onload区别

js onreadystatechange 和 onload区别

BIG阳 2019-03-13 10:09:27
js onreadystatechange 和 onload区别
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

XMLHttpRequest 对象的 onload 回调函数是在异步请求加载完成后所执行的函数,当JavaScript 监测到请求的数据全部传输完成后就会触发该函数。而 open() 函数设置异步请求的 method、URL 和同步方式等参数,执行 open() 后再执行 send() 函数才开始向服务器发送请求。

另外,onload 回调函数实际上是 XHR2 中新加入的功能,部分浏览器可能不支持这个函数名。要避免不兼容的现象,可以使用传统  XMLHttpRequest,如:

1

2

3

4

5

6

7

8

9

10

11

//省略其他代码

request.onreadystatechange=function() // 状态改变回调函数

{

  // 判断 request.readyState==4 的效果等同于 onload 

  if(request.readyState==4 && request.status==200)

  {

    // 加载且响应正常完成后执行的代码.... 

  }

}

request.open("GET",url,true); // 打开对象,也可以说是设置参数

request.send(); // 发送请求

 

还有一些误解需要澄清一下,

  1. window.onload 回调函数其实是在页面加载完成后(包括图片内容的显示)才会执行,并不是页面加载的等待过程中就执行。

  2. request.open() 并没有发送请求,只是设置一些参数,在 send() 时才会发送(注意不要漏写这条语句),发送后就会进入 readyState 监听状态,当 readyState 的值有改变就会执行 onreadystatechange 回调函数,当异请求的步数据接收完成(即      readyState 变为 4)后就会执行      onload 回调函数(注意仅在 XHR2 中有效)。

 


查看完整回答
反对 回复 2019-03-21
  • 2 回答
  • 0 关注
  • 2093 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信