javascript xhr.upload未定义。无法跟踪上传进度

时间:2012-01-19 14:51:55

标签: javascript ajax html5 xmlhttprequest

我正在尝试开发一个带有进度条的html-5上传器。 我已经完成了发送和接收文件,但进度条仍然存在。

所有示例都使用类似的内容:

var xhr = new XMLHttpRequest();
xhr.upload.addEventListener("progress", function (evt) { ...

当我在浏览器控制台中输入此内容时,它会以 undefined

响应
var xhr = new XMLHttpRequest(); alert(xhr.upload);

如何获取上传对象的手,以便跟踪进度? 我已经测试过最新的Chrome(v16)和Firefox(v9)

4 个答案:

答案 0 :(得分:1)

这似乎适用于Chrome控制台

var request = new XMLHttpRequest();
request.addEventListener("progress", function(){console.log('progress')});
request.open("POST", "/", true);
request.send(null);

答案 1 :(得分:1)

发现错误。 当我在不同的浏览器环境(新标签页)中使用控制台时,它可以工作。我将错误定位为python的Dajaxice库,它显然破坏了本机xhr对象的一些属性。谢谢你的帮助,让我思考......: - )

Note2-self:在用于调试时,不要认为控制台是“干净的”。

答案 2 :(得分:0)

尝试直接设置onprogress

xhr.upload.onprogress = function(evt){console.log('progress')};

然后做你正在做的事情。

它应该工作,只需在控制台中创建一个新的xhr,上传就在那里。你的代码中正在发生其他事情。

enter image description here

答案 3 :(得分:0)

这不是dajaxice问题本身,但它使用的XMLHTTMLRequest.js库的问题请参见对应的已知和未修复的问题https://github.com/ilinsky/xmlhttprequest/issues/12

但它确实是在HTML5应用程序中使用Dajax / DajaxIce的阻止程序