博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript Ajax与Comet——“进度事件”的注意要点
阅读量:6955 次
发布时间:2019-06-27

本文共 1493 字,大约阅读时间需要 4 分钟。

有以下6个进度事件:

  • loadstart: 在接收到响应数据的第一个字节时触发。

  • progress: 在接收响应数据期间持续的触发

  • error: 在请求发生错误时触发

  • abort: 在因调用abort() 方法而终止连接时触发

  • load: 在接收到完整的响应数据时触发

  • loadend: 在通信完成或者触发error, abort, load事件后触发。

现在所有的主流浏览器都支持load事件, 前五个除了IE其他的都支持

load事件

下面是使用示例:

xhr.onload = function() {    if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {        alert(xhr.responseText);    } else {        alert("Request was unsuccessful:" + xhr.status);    }}

放到open方法之前。

如:

var xhr = new XMLHttpRequest();// xhr.onreadystatechange = function () {//     if (xhr.readyState == 4) {//         if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {//             console.log(xhr.responseText);//         } else {//             console.log("error");//         }    //     }// };xhr.onload = function () {    if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {        console.log(xhr.responseText);    } else {        console.log("error");    }};xhr.open("get", "getexample.php", true);xhr.send(null);

响应接收完毕后将触发load事件,因此也就没有必要去检查readyState属性了。

progress事件

onprogress事件处理程序会接收一个event对象,其target属性是XHR对象,但包含着三个额外属性:

  • lengthComputable

  • position

  • totalSize

其中lengthComputable表示进度信息是否可用的布尔值,position表示已经接收的字节数,totalSize表示根据Content-Length响应头部确定的预期字节数。

根据这些信息,就可以创建一个进度指示器:

xhr.onprogress = function () {    if (event.lengthComputable) {        document.getElementById("status").innerHTML = "Received " + event.position + " of " + event.totalSize + " bytes.";    }};

要注意的是position已改为loaded;totalSize已改为total

转载地址:http://rftil.baihongyu.com/

你可能感兴趣的文章
【CodeForces 699D】Fix a Tree
查看>>
V神:zk-snarks技术可以帮助以太坊扩容,有望达到500笔交易/秒
查看>>
你好RunLooooooop
查看>>
关于Web开发中的“程序=数据结构+算法”
查看>>
说说资源加载的问题(Class的getResource方法)
查看>>
代码片段
查看>>
【跃迁之路】【738天】程序员高效学习方法论探索系列(实验阶段495-2019.2.28)...
查看>>
C++回声服务器_6-多进程pipe版本服务器
查看>>
面试官问你“有什么问题问我吗?”,你该如何回答?
查看>>
Fabric架构演变之路
查看>>
android课程表控件、悬浮窗、Todo应用、MVP框架、Kotlin完整项目源码
查看>>
go-micro 框架源码剖析 之 函数选项模式
查看>>
使用scrapy抓取Youtube播放列表信息
查看>>
python文件打包利器之pyinstaller的使用
查看>>
盒子边界(根据理解和测试记录,在概念上可能有描述错误,推荐补充)
查看>>
2019年到了,送你一份最新Java架构图谱(性能优化+微服务+……)
查看>>
react16生命周期方法
查看>>
Java™ 教程(Lambda表达式)
查看>>
wepy根据不同打包命令配置不同的全局变量
查看>>
leetcode 简化路径
查看>>