我为我的网站使用AJAX上传,而Javascript是选择(不是jQuery)。 但我提出的并不适用于Firefox。这是XMLHttpRequest代码块:
var xhr = new XMLHttpRequest();
xhr.open("POST", "upload.php");
xhr.onprogress = function(event){
if(event.lengthComputable)
{
console.log(event.loaded);
}
};
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.send(formData);
并注意xhr.onprogress
事件。
或者,我也使用以下代码进行处理:
xhr.upload.addEventListener("progress", function(){
// do something
}, false);
可是:
对于xhr.onprogress
的第一个解决方案,它有一个问题:
它只显示上传完成后event.loaded
的数量。由于上载已完全加载文件,因此该数量与文件大小相同。
它适用于FF和chrome,但我不希望它只是在进度到达结束后抛出一个值。
第二个解决方案很好,并且工作正常,但它在Firefox中无法正常工作。但是在firefox中,没有抛出任何错误,并且正如我测试的那样,progressEvent
根本没有被触发。
chrome和Firefox都是最新版本。
答案 0 :(得分:1)
我认为问题是你在onprogress
之后添加了open()
听众,应该在之前完成:
var xhr = new XMLHttpRequest();
xhr.onprogress = function (event) {
if (event.lengthComputable) {
console.log(event.loaded);
}
};
xhr.open("POST", "upload.php");
或者:
var xhr = new XMLHttpRequest();
xhr.addEventListener("progress", function (event) {
if (event.lengthComputable) {
console.log(event.loaded);
}
}, false);
xhr.open("POST", "upload.php");