【发布时间】:2016-06-11 09:22:31
【问题描述】:
我正在尝试在 ajax 请求响应文本中查找图像并获取 src url 以在另一个 ajax 请求中使用。
我需要知道加载每个图像的进度,并在我的进度栏中显示此进度的结果。 但是你可以看到 image1 是否加载了 10%; 和 image2 20%。
我的结果从 20% 下降到 10% 。 我的进度条会后退,然后前进。
有什么帮助吗? 或者这是一个好的解决方案?
parseResult: function(result, navNumber) {
var self = this;
var imagesMatter = $(result).find('img');
var imagesLength = imagesMatter.length;
// if there is any image in ajax request then fetch imgs using ajax for show progress bar
if (imagesLength >= 1) {
var i = 0,
complete = 0,
temp = 1;
navigation.progress.fadeIn(50);
imagesMatter.each(function() {
var $this = $(this);
var URL = $this.attr('src');
$.ajax({
url: URL,
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.addEventListener("progress", function(evt) {
if (evt.lengthComputable) {
var percentComplete = parseFloat(evt.loaded / evt.total).toFixed(1);
temp = complete + (percentComplete / imagesLength);
console.log(parseInt(temp * 100) + '%');
navigation.progress.html(parseInt(temp * 100) + '%');
}
}, false);
return xhr;
},
complete: function() {
complete = temp;
i++;
if (i == imagesLength) {
self.closeLoading(navNumber);
}
}
});
});
} else {
return;
}
}
【问题讨论】:
-
你不应该在进度回调中设置
complete = temp;,而不仅仅是在完成回调中吗?! -
@amif :如果我理解正确,你想显示两个图像加载的单个进度条,对吧?
-
@amir : 我的代码解决了你的问题吗?
-
@ParagBhayani 是的。完全正确,但我要为所有图像而不是 2 个。(也许将来我有 10 个)和抱歉实际上它增加到 199%,但我需要 0% 到 100%
-
@ParagBhayani 看看这个 -> haveyoumetme.ir/2
标签: javascript jquery ajax progress-bar jqxhr