我使用以下$ .ajax命令从PhoneGap应用程序上传文件:
function updateProgress( evt ) {
if ( evt.lengthComputable ) {
var percentComplete = evt.loaded / evt.total * 100;
console.log( percentComplete + "%" );
}
}
$.ajax({
url: url,
type: "POST",
data: data,
cache: false,
dataType: "json",
processData: false,
contentType: false,
success: successCallback,
error: errorCallback,
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.addEventListener( "progress", updateProgress, false);
return xhr;
}
});
上传工作正常。但是,一旦上传完成,进度事件只会触发一次。它实际上并没有在上传期间触发 - 因此实际上不会显示上传进度。上传时只有暂停,然后显示100%。
任何想法我做错了什么?
答案 0 :(得分:16)
在progress
上触发上传xhr.upload
个事件,因此请将侦听器附加到xhr
而不是progress
。 xhr
对象上还有xhr.upload.addEventListener('progress', updateProgress, false)
个事件,但这是针对从服务器返回的响应。
有关详细信息,请参阅the MDN article。
a-z
(感谢A. Wolff及其对OP的评论。)