带百分比的JQuery Ajax请求

use*_*483 5 javascript php mysql ajax jquery

我需要获得ajax请求的%完成率.

我尝试了以下方法:

$(document).ready(function() {
    $.ajax({
        xhr : function() {
            var xhr = new window.XMLHttpRequest();
            xhr.upload.addEventListener("progress", function(evt) {
                if (evt.lengthComputable) {
                    var percentComplete = (evt.loaded / evt.total) * 100;
                    //Do something with upload progress here
                }
            }, false);

            xhr.addEventListener("progress", function(evt) {
                if (evt.lengthComputable) {
                    var percentComplete = (evt.loaded / evt.total) * 100;
                    //Do something with download progress
                    console.log(percentComplete);       
                }
            }, false);

            return xhr;
        },
        url : my_path
    }).done(function(data) {

        console.log(data);
    });
}); 
Run Code Online (Sandbox Code Playgroud)

问题是我如何检查上面的代码是否有效.我总是进入100firebug控制台,我怀疑而不是在控制台中100应该有多个%条目.

my_path是一个从MySQL DB返回记录的PHP页面.有没有办法减慢进程/页面呈现以检查功能?

Mik*_*ike 4

使用数据库读取的问题是需要首先知道大小,因此您确实需要一个文件来测试它。

对于下载(客户端从服务器下载),您需要引入延迟,否则您唯一的办法就是下载一个大文件。

尝试这个脚本,它设置正确的内容长度标头,并且一次仅输出 50 个字节,延迟 1 秒(您可以使用相对较小的文件进行测试,woot)。

至于上传(发布到服务器),您唯一的选择就是将其设为大文件,并在完成后将其丢弃。