- AJAX 教程
- AJAX - 首页
- AJAX - 什么是 AJAX?
- AJAX - 历史
- AJAX - 动态网站与静态网站
- AJAX - 技术
- AJAX - 操作
- AJAX - XMLHttpRequest
- AJAX - 发送请求
- AJAX - 请求类型
- AJAX - 处理响应
- AJAX - 处理二进制数据
- AJAX - 提交表单
- AJAX - 文件上传
- AJAX - FormData 对象
- AJAX - 发送 POST 请求
- AJAX - 发送 PUT 请求
- AJAX - 发送 JSON 数据
- AJAX - 发送数据对象
- AJAX - 进度监控
- AJAX - 状态码
- AJAX - 应用
- AJAX - 浏览器兼容性
- AJAX - 示例
- AJAX - 浏览器支持
- AJAX - XMLHttpRequest
- AJAX - 数据库操作
- AJAX - 安全性
- AJAX - 问题
- Fetch API 基础
- Fetch API - 基础
- Fetch API 与 XMLHttpRequest 对比
- Fetch API - 浏览器兼容性
- Fetch API - 头部信息
- Fetch API - 请求
- Fetch API - 响应
- Fetch API - 主体数据
- Fetch API - 凭据
- Fetch API - 发送 GET 请求
- Fetch API - 发送 POST 请求
- Fetch API - 发送 PUT 请求
- Fetch API - 发送 JSON 数据
- Fetch API - 发送数据对象
- Fetch API - 自定义请求对象
- Fetch API - 上传文件
- Fetch API - 处理二进制数据
- Fetch API - 状态码
- Stream API 基础
- Stream API - 基础
- Stream API - 可读流
- Stream API - 可写流
- Stream API - 变换流
- Stream API - 请求对象
- Stream API - 响应主体
- Stream API - 错误处理
- AJAX 有用资源
- AJAX - 快速指南
- AJAX - 有用资源
- AJAX - 讨论
AJAX - 进度监控
AJAX 提供了一个名为进度监控的特殊功能。使用此功能,我们可以跟踪 AJAX 从 Web 浏览器到 Web 服务器的异步请求的进度。或者可以说,使用进度监控器,我们还可以监控从服务器到用户的上传或下载了多少数据。借助进度监控,我们可以向用户发送反馈,其中包含以下几点:
数据传输进度 - 我们可以监控从服务器到客户端传输的数据进度。或者我们还可以跟踪与给定文件总大小相比,传输或接收了多少数据。
请求状态 - 我们还可以监控我们发出的请求的整体状态(例如请求是否仍在进行中、已完成或挂起)。这有助于程序员向用户提供当前请求的适当反馈。
错误处理 - 除了跟踪当前状态外,处理请求数据时发生的任何错误(例如服务器端错误、网络问题等)也很重要。因此,使用错误处理,我们可以轻松地向用户发送通知,以便他/她可以对发生的错误采取适当的措施。
如何监控进度
要监控 AJAX 请求的进度,我们可以使用以下方法:
使用 onprogress 事件 - 要监控请求的进度,我们可以定义一个“onprogress”事件,该事件在数据传输处理期间定期触发。它通常用于监控文件下载或大型数据/文件传输的进度。它监控诸如加载了多少数据、传输数据的总大小等信息。
示例
在下面的程序中,我们将借助 onprogress 事件来监控请求的当前状态。在这里,我们创建一个名为 displayStatus() 的 Javascript 函数,该函数显示正在传输多少数据的状态。此函数发出 AJAX 请求以将数据发送到给定的 URL。因此,它使用 XMLHttpRequest 对象创建一个请求,然后定义一个回调函数来处理服务器提供的响应。在回调函数内。onprogress 事件检查传输数据的当前进度。在 onprogress 事件处理程序中,我们可以检查进度数据是否可计算以避免除零错误。如果它是可计算的,那么我们可以计算传输到服务器的数据百分比。
<script> function displayStatus() { // Creating XMLHttpRequest object var myObj = new XMLHttpRequest(); // Creating call back function // Here onprogress return the percentage of transferred data myObj.onprogress = function(myEvent) { if (myEvent.lengthComputable){ var dataTarnsferPercentage = (myEvent.loaded/myEvent.total)*100; console.log("Current progress of the data transfer:", dataTarnsferPercentage); } }; // Open the given file myObj.open("GET", "https://jsonplaceholder.typicode.com/todos", true); // Sending the request to the server myObj.send(); } </script>
使用 onreadystatechange 事件 - 我们可以通过创建 onreadystatechange 事件来监控请求的进度。每当 XMLHttpRequest 的 readyState 属性发生变化时,此事件就会触发。readyState 属性返回请求的当前状态。
示例
在下面的程序中,我们将借助 onreadystatechange 事件来监控请求的当前状态。在这里,我们创建一个名为 displayStatus() 的 Javascript 函数,该函数显示请求当前状态的状态。此函数发出 AJAX 请求以从给定的 URL 检索数据。因此,它使用 XMLHttpRequest 对象创建一个请求,然后定义一个回调函数来处理服务器提供的响应。在回调函数内。onreadystatechange 事件使用 readyState 属性检查请求的当前状态。如果 readyState 为 XMLHttpRequest.DONE,则表示请求已完成并打印“请求已完成”。否则打印“请求正在进行中”。
<script> function displayStatus() { // Creating XMLHttpRequest object var myObj = new XMLHttpRequest(); // Creating call back function // Here onreadystatechange return the current state of the resuest myObj.onreadystatechange = function() { if (this.readyState == XMLHttpRequest.DONE){ console.log("Request is completed") }else{ console.log("Request is in-progress") } }; // Open the given file myObj.open("GET", "https://jsonplaceholder.typicode.com/todos", true); // Sending the request to the server myObj.send(); } </script>
结论
这就是我们如何监控请求的进度。这样我们就可以轻松跟踪正在传输多少数据、成功处理了多少数据、错误等等。在下一篇文章中,我们将了解 AJAX 支持的状态码。