首页 > 解决方案 > 通过 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');
    }
}

标签: javascriptxmlhttprequest

解决方案


尝试改变你的,

req.addEventListener("progress", updateProgress);

作为,

req.upload.addEventListener('progress', updateProgress, false);

下载和上传传输都存在进度事件。下载事件在 XMLHttpRequest 对象本身上触发。根据MDN 文档,上传事件在 XMLHttpRequest.upload 对象上触发

希望这可以帮助!


推荐阅读