javascript - 通过 XMLHttpRequest 读取响应流
问题描述
我有应该读取响应流并填充进度条的代码。服务器响应正确。问题是updateProgress
没有触发事件。
function load_binary_resource(url) {
var req = new XMLHttpRequest();
req.open('GET', url, false);
req.addEventListener("progress", updateProgress);
req.overrideMimeType('text\/plain; charset=x-user-defined');
req.send(null);
if (req.status != 200) return '';
return req.responseText;
}
function updateProgress (oEvent) {
if (oEvent.lengthComputable) {
console.log('loading');
var percentComplete = oEvent.loaded / oEvent.total * 100;
// ...
} else {
console.log('something happening');
}
}
解决方案
尝试改变你的,
req.addEventListener("progress", updateProgress);
作为,
req.upload.addEventListener('progress', updateProgress, false);
下载和上传传输都存在进度事件。下载事件在 XMLHttpRequest 对象本身上触发。根据MDN 文档,上传事件在 XMLHttpRequest.upload 对象上触发
希望这可以帮助!
推荐阅读
- docker-swarm - 无法使用连接到同一 VCN 的 Oracle Cloud VM 加入 docker swarm
- php - Html 和 css 到电子邮件 php laravel
- javascript - 赛普拉斯 - 错误消息与代码不匹配
- c++ - CSES - 不同的颜色
- php - WooCommerce 针对特定产品类别的累进数量折扣
- css - CSS网格没有调整到屏幕的宽度
- wordpress - Flutter Wordpress:在 null 上调用了 getter 'length'。接收方:null 尝试调用:长度
- database - 将包含多个 jsonl 文件的多个文件夹加载到 GCP 中的云数据库中(例如:BigQuery)
- javascript - 谁能解释为什么这适用于类组件而不是功能组件?
- javascript - 单击时为每个单独的 TD 打开跨度