Ajax 获取进度和中断请求

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

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

JavaScript 核心代码:

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服务器做测试:

javascript 复制代码
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是要返回的文本内容,因为要数据凉够大才方便查看进度,所以用了文本文件


效果:

相关推荐
缓慢更新9 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
陈随易9 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员
风骏时光牛马10 小时前
AI稳定性治理体系构建与疑难问题深度分析
前端
IT_陈寒11 小时前
JavaScript的this坑人实录,这次我真的记下来了
前端·人工智能·后端
开开心心就好12 小时前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
螺丝钉tina13 小时前
[Playwright] [02]常用命令与调试:Debug UI、Mode和 Trace Viewer
开发语言·javascript·测试工具·ui·自动化
PedroQue9913 小时前
0.8.2 新增 backFallback 配置,无 tabbar 页返回无忧
前端·uni-app
淡漠的蓝精灵13 小时前
web.py:一个简单到极致的 Python Web 框架
开发语言·前端·python·其他
开开心心就好14 小时前
竖式除法出题工具,整除余数混合模式
运维·服务器·前端·javascript·ocr·perl·1024程序员节
起个名字费劲死了14 小时前
Halcon学习一:骰子识别
前端·python·学习