【发布时间】:2015-06-23 15:17:11
【问题描述】:
我需要的是一个动画进度条(就像 youtube 上的那个),但请不要使用插件!
我的 ajax 请求如下所示:
$.ajax({
xhr: function() {
var xhr = new window.XMLHttpRequest();
//Download progress
xhr.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
console.log(evt);
var percentComplete = evt.loaded / evt.total * 100;
//Do something with download progress
// this is a static animation but i'm not able to make it work with the precentComplete that i have.
$({
property: 0
}).animate({
property: 105
}, {
duration: 4000,
step: function() {
var _percent = Math.round(this.property);
$('#progress').css('width', _percent + "%");
if (_percent == 105) {
$("#progress").addClass("done");
}
},
complete: function() {
alert('complete');
}
});
}
}, false);
return xhr;
},
type: method,
url: rest_api,
headers: headers,
timeout: 10000,
dataType: 'json',
data: http_content,
beforeSend: function(xhr) {
// do stuff
},
success: function(data, status, xhr) {
// do stuff
},
error: function(xhr, e) {
// do stuff
}
});
所以,我已经制作了一个动画,但我无法将其链接为真实动画,这是一个静态动画,但我无法使其与我在进度事件中拥有的 precentComplete 一起工作。
有什么想法吗?我需要通过工作 sn-p 或示例对这个 XHR2 进行更多说明,以便更好地理解。
动画长这样:jsFiddle
【问题讨论】:
-
我不确定您想要的进度,但 xhr 请求的进度是发送数据(上传)的进度。所以这真的只适用于大输入。对于小的输入,它会立即跳到 100%。
-
我想要的是下载数据不上传的进度,比如
youtube的东西,直到它通过 AJAX 获取数据。
标签: javascript jquery css ajax html