Jquery Html5 ajax文件上传进度侦听器在Firefox上100%上传时未触发

Jquery Html5 ajax文件上传进度侦听器在Firefox上100%上传时未触发,jquery,ajax-upload,Jquery,Ajax Upload,我正在通过ajax上传文件,并在上传后处理图像。 当我尝试在firefox上通过ajax上传图像文件时,当上传百分比为100%但文件上传成功时,xhr进度事件不会触发我的进度函数 Google chrome在上传进度100%时触发,但firefox没有 Biriefly我的上传脚本: $("#uploadbutton").click(function(){ var xhr=new XMLHttpRequest() ,fd=new FormData(); xhr.upload.

我正在通过ajax上传文件,并在上传后处理图像。 当我尝试在firefox上通过ajax上传图像文件时,当上传百分比为100%但文件上传成功时,xhr进度事件不会触发我的进度函数

Google chrome在上传进度100%时触发,但firefox没有

Biriefly我的上传脚本:

$("#uploadbutton").click(function(){
   var xhr=new XMLHttpRequest()
   ,fd=new FormData();

   xhr.upload.addEventListener("loadstart", uploadStart, false);
   xhr.upload.addEventListener("progress", uploadProgress, false);
   xhr.addEventListener("error", uploadFailed, false);

   xhr.open("POST", mainurl+"ajaxupload.php");

   $.each($("#upload_input").files,function(i,file){
     fd.append("files_"+i,file);
   });    

  xhr.send(fd);

});

function uploadProgress(event){
   var percentComplete = Math.round(event.loaded * 100 / event.total);
   console.log("pecent ",percentComplete);
}

上载开始时,uploadProgress函数运行1次(多数情况下是在上载百分比为80%时),但在上载fnish时不会触发。

除了当前的处理程序外,还要添加两个处理程序:(成功完成时激发),(最后激发,始终激发)

//零或一次
xhr.addEventListener(“加载”,上载成功,错误);
函数上载成功(事件){
log(“上传成功”);
}
//一次
xhr.addEventListener(“loadend”,uploadComplete,false);
函数上载完成(事件){
console.log(“全部完成”);
}

我正在将load listener添加到xhr中,但它从未触发listener函数。我在你说了之后尝试了“load”listener。在用法写入时,“load”listener触发“zero或once”,当load listener触发一次,当zero?触发“load”时,如果上载成功,则触发“loadend”。如果不成功,只触发“loadend”。我已经更新了答案。