Javascript 上传完成后才触发XHR进度事件?

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

我使用以下$.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;
    }
});
上传工作正常。但是,一旦上传完成,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
不起作用?