带百分比的JQuery Ajax请求

时间:2014-05-13 04:51:58

标签: javascript php jquery mysql ajax

我需要获得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);
    });
}); 

问题是如何检查上述代码是否有效。我总是在firebug控制台中得到100,我怀疑而不是100在控制台中应该有多个%条目。

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

1 个答案:

答案 0 :(得分:3)

使用数据库读取的问题是首先需要知道大小,所以你真的需要一个文件来测试它。

对于下载(客户端从服务器下载),你需要引入延迟,否则你只能追索下载一个巨大的文件。

尝试this script,它设置正确的内容长度标题,一次只输出50个字节,延迟1秒(你可以用相对较小的文件测试它,woot)。

至于上传(发布到服务器),在这方面你唯一的选择是把它变成一个大文件,并在完成后丢弃它。