在下载文件时显示进度条

时间:2016-04-09 06:06:18

标签: php ajax cakephp

目的:

我想在下载文件时显示进度条。

到目前为止我尝试过:

AJAX代码:

    $.ajax({
            async: true,
            xhr: function() {
                var xhr = new window.XMLHttpRequest();
                console.log(xhr);
                xhr.addEventListener("progress", function (evt) {
                    if (evt.lengthComputable) { 
                        var percentComplete = (evt.loaded / evt.total) *100;
                        $("div.progress > div.progress-bar").css({ "width": percentComplete + "%" }); 
                    } 
                },false);
            return xhr;
            }, 
            url: $("#CardExportCardsForm").attr('action'),
            data: $("#CardExportCardsForm").serialize(),
            success: function(data){
                //console.log(data);
            }


        });

HTML code:

进度条:

 <div class="progress"> 
    <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
    </div> 
</div>

问题我正面临:

AJAX请求工作正常。它获得了成功的响应,文件正在成功。

但是,它并没有在任何地方显示下载进度。我甚至尝试在日志中打印percentComplete,但无济于事。

任何帮助都将受到高度赞赏。

提前致谢!

1 个答案:

答案 0 :(得分:0)

  

ProgressEvent.lengthComputable只读属性是一个布尔值   指示ProgressEvent所关注的资源是否具有的标志   可以计算的长度。如果没有,则为ProgressEvent.total   财产没有重大价值。

它与所有浏览器不兼容,因为您可以查看here