Javascript 上传完成后才触发XHR进度事件?
我使用以下$.ajax命令从PhoneGap应用程序上载文件:Javascript 上传完成后才触发XHR进度事件?,javascript,jquery,ajax,cordova,xmlhttprequest,Javascript,Jquery,Ajax,Cordova,Xmlhttprequest,我使用以下$.ajax命令从PhoneGap应用程序上载文件: function updateProgress( evt ) { if ( evt.lengthComputable ) { var percentComplete = evt.loaded / evt.total * 100; console.log( percentComplete + "%" ); } } $.ajax({ url: url, type: "PO
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;
}
});
上传工作正常。但是,一旦上传完成,progress事件只触发一次。它实际上不会在上传过程中触发-因此上传进度实际上不会显示。上传时只是暂停一下,然后显示100%
知道我做错了什么吗?上传
进度
事件是在xhr上触发的。上传
,因此将侦听器附加到该事件,而不是xhr
。在xhr
对象上也有progress
事件,但这是从服务器返回的响应
有关更多详细信息,请参阅
xhr.upload.addEventListener('progress', updateProgress, false)
(感谢A.Wolff及其对OP的评论)文件的大小是多少?您是否尝试过:
xhr.upload.addEventListener(“progress”,updateProgress,false)代码>?文件大小只有几兆字节-足够大,上传时间超过1/2秒。将事件监听器添加到xhr.upload中根本不会触发任何事件,即使在完成时也是如此。谢谢有完全相同的问题。你找到解决办法了吗?@a.Wolff我一直被这个问题困扰,今天花了很多时间!这太对了!非常感谢。但是根据文档,为什么xhr.addEventListener
不起作用?