2014-05-13 96 views
5

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

的问题是我如何检查上面的代码是否工作正常与否。我总是得到100在萤幕控制台,我怀疑,而不是100控制台应该有多个%条目。

my_path是一个PHP页面,从MySQL数据库返回的记录。有什么办法来减缓进程/页面渲染来检查功能吗?

+1

可能的重复http://stackoverflow.com/questions/16690740/how-to-show-loading-status-in-percentage-for-ajax-response – Manibharathi

+0

@Manibharathi我已经实现了该功能,需要检查减慢页面渲染或数据库操作的%功能? – user3555483

+0

你在本地系统中使用过吗? – Manibharathi

回答

3

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

可供下载(客户端从服务器下载关闭),你需要引入延迟,否则你是唯一的办法是下载一个大文件。

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

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