【发布时间】:2014-06-30 15:25:32
【问题描述】:
我需要获得 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 是一个从 MySQL 数据库返回记录的 PHP 页面。有什么方法可以减慢进程/页面渲染以检查功能?
【问题讨论】:
-
@Manibharathi 我已经实现了该功能,需要通过减慢页面渲染或数据库操作来检查 % 功能?
-
你在本地系统中使用过吗?
-
什么的百分比?在纯理论层面上考虑它。如果尚未完成接收请求,浏览器应该如何知道请求的大小?如果您让服务器通过
Content-Length标头宣布大小,那是一回事,但在您流回结果的情况下(我相信这是 php 通常所做的),这是不可能的。 -
@GeorgeMauer - 上传时,浏览器知道文件大小。下载时,必须在Header信息中设置,这在PHP中是不可能的(见我的回答,下面)。
标签: javascript php jquery mysql ajax