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(); // 发送请求 |
还有一些误解需要澄清一下,
window.onload 回调函数其实是在页面加载完成后(包括图片内容的显示)才会执行,并不是页面加载的等待过程中就执行。
request.open() 并没有发送请求,只是设置一些参数,在 send() 时才会发送(注意不要漏写这条语句),发送后就会进入 readyState 监听状态,当 readyState 的值有改变就会执行 onreadystatechange 回调函数,当异请求的步数据接收完成(即 readyState 变为 4)后就会执行 onload 回调函数(注意仅在 XHR2 中有效)。
添加回答
举报