带百分比的JQuery Ajax请求

我需要获得ajax请求的%完成率。 </ p>

我尝试了以下内容:</ p>

  $(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;
//在此处执行上传进度的事情
}
},false);

xhr.addEventListener(“progress”,function(evt){
if(evt.lengthComputable){
var percentComplete =(evt.loaded / evt.total)* 100;
//执行下载进度的事情
console.log(percentComplete);
}
},false );

返回xhr;
},
url:my_path
})。done(function(data){

console.log(data);
});
}) ;

</ code> </ pre>

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

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

展开原文

原文

I need to get the % completion for ajax request.

I tried the following:

$(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);
    });
}); 

The problem is how do I check whether the above code is working or not. I always get 100 in the firebug console, I doubt instead of 100 there should be multiple % entries in console.

my_path is a PHP page that returns records from MySQL DB. Is there any way to slow down the process/page rendering to check the functionality?

doushi1473
doushi1473 等等是他试图衡量上传进度?我完全没有那个。OP你能澄清一下吗?
6 年多之前 回复
drzdu44226
drzdu44226 -上传时,浏览器知道文件大小。下载时,必须在Header信息中设置它,这在PHP中是可能的(参见下面的答案)。
6 年多之前 回复
doushihu5475
doushihu5475 什么的百分比?在纯粹的理论层面上考虑它。如果请求尚未完成接收,浏览器应该知道请求有多大?如果您让服务器通过Content-Length标头宣布大小是一回事,但是在您回流结果的情况下(这是我通常认为的PHP),这是不可能的。
6 年多之前 回复
douzhong5902
douzhong5902 是!
6 年多之前 回复
duanchi19820419
duanchi19820419 你在本地系统中使用过吗?
6 年多之前 回复
dreljie602951
dreljie602951 我已经实现了这个功能,需要通过减慢页面呈现或数据库操作来检查%功能吗?
6 年多之前 回复
du7535
du7535 可能重复的stackoverflow.com/questions/16690740/...
6 年多之前 回复

1个回答



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

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

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

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

展开原文

原文

The problem with using DB reads is the size needs to be known first, so you really need a file to test this.

For Downloading (client downloading off from the server), you need to introduce delay, otherwise you're only recourse is to download a huge file.

Try this script, which sets up the correct content length headers and only outputs 50 bytes at a time, with a 1 second delay (you can test it with a relatively small file, woot).

As for Uploading (posting to the server), your only option in this regard is to make it a big file, and discard it when done.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问