当前位置: 首页 > article >正文

Ajax 获取进度和中断请求

HTML加入一些内容方便看效果和做交互:

<div>
  <p>当前传输进度:<span id="progress">0%</span></p>
  <button id="send">发送</button>
  <button id="btn">中断</button>
</div>

JavaScript 核心代码:

// 发送请求
    document.getElementById('send').addEventListener('click', function () {
      const xhr = new XMLHttpRequest()
      xhr.open('GET', 'http://localhost:9001/test')
      xhr.onreadystatechange = function () {
        if (xhr.readyState === 4 && xhr.status === 200) {
          console.log(xhr.responseText)
        }
      }

      // 获取进度
      xhr.addEventListener('progress', function (e) {
        console.log(e)
        const percent = (e.loaded / e.total) * 100
        document.getElementById('progress').textContent = percent.toFixed(2) + '%'
      })

      // 点击按钮中断请求
      document.getElementById('btn').addEventListener('click', function () {
        console.log('中断请求')
        xhr.abort()
      })

      xhr.send()
    })

这里我自己弄了个简单的node服务器做测试:

const express = require('express')
const app = express()

//创建get请求
app.get('/test', (req, res) => {
  res.setHeader('Content-Type', 'application/json;charset=utf-8')
  res.setHeader('Access-Control-Allow-Origin', '*')

  // 读取txt文件
  const fs = require('fs')
  const data = fs.readFileSync('resData.txt', 'utf-8')

  res.json({
    code: 200,
    message: "请求成功",
    data
  })

})
//端口号9001
app.listen(9001)
console.log('server is running at http://localhost:9001')

这里resData.txt是要返回的文本内容,因为要数据凉够大才方便查看进度,所以用了文本文件


效果:

在这里插入图片描述


http://www.kler.cn/a/393648.html

相关文章:

  • Gartner发布安全平台创新洞察:安全平台需具备的11项常见服务
  • 机器学习总结
  • Mysql数据库里的SSH连接
  • Leecode热题100-35.搜索插入位置
  • 数据集标注txt文件读取小工具
  • HarmonyOS SDK下的实践与探索
  • 华为OD机试真题-仿LISP计算
  • GitHub每日最火火火项目(11.14)
  • 服务器硬件介绍
  • 自动驾驶系列—从数据采集到存储:解密自动驾驶传感器数据采集盒子的关键技术
  • Ubuntu上nginx常用命令
  • 电子制造行业Top5贴片机品牌
  • [DB] Project-1-MySQL
  • 「QT」几何数据类 之 QVector2D 二维向量类
  • 本地编译ChatNio的问题解决
  • Ubuntu22.04中使用CMake配置运行boost库示例程序
  • 《目标检测》——基础理论知识(目标检测的数据集、评价指标:IOU、mAP、非极大抑制NMS)
  • uni-app收藏按钮组件实现⑬
  • WebAPI性能监控-MiniProfiler与Swagger集成
  • 鸿蒙next版开发:相机开发-预览(ArkTS)
  • 什么是虚拟内存,为什么要使用虚拟内存,虚拟内存可能比物理内存大吗?
  • 递归搜索与回溯算法
  • Spring设计模式
  • Halcon3D gen_image_to_world_plane_map的理解和实用
  • github SSH连接(windows)
  • 关于我重生到21世纪学C语言这件事——指针详解(1)