2012-01-19 50 views
3

我正在尝试开发带进度条的html-5上传器。 我已经完成了发送和接收文件,但进度条仍然存在。javascript xhr.upload是未定义的。无法跟踪上传进度

所有的例子都采用类似:

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

当我在浏览器控制台输入这个它不确定

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

回应我怎么上传对象的手如此我可以跟踪进度? 我测试过最新的Chrome(v16)和Firefox(v9)

+0

哎呀使用Dajax/DajaxIce阻断剂。关于格式化。我的第一篇文章。 – terjeto

+0

警报是否有效?控制台当然会打印出未定义的,因为第一个是不返回值的语句,第二个是不返回值的函数调用。 –

+0

我会认为它应该工作,因为:var xhr = new XMLHttpRequest();警报(xhr.send);工作..无论如何绑定到xhr.upload给出错误“xhr.upload是未定义的” – terjeto

回答

0

尝试直接设置onprogress

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

然后做你在做什么。

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

enter image description here

+0

我只使用控制台。确切地输入“var xhr = new XMLHttpRequest(); xhr.upload.onprogress = function(e){console.log(e)}”会给出错误“xhr.upload is undefined”。我错过了什么?这个确切的代码会给你同样的错误吗? – terjeto

+0

只需在创建xhr后尝试xhr.upload – hvgotcodes

+0

发现它是对我的xhr对象执行某些操作的dajaxice django模块。谢谢回复。 – terjeto

1

这似乎在Chrome控制台

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

想我发现了这个错误。当我在不同的浏览器环境(新选项卡)中使用控制台时,它工作正常。我找到的错误是python的Dajaxice库,它显然破坏了本地xhr对象的一些属性。感谢您的帮助,让我想到...... :-) – terjeto

+0

我遇到了同样的问题,试图使用JQuery xhr包装。 –

+0

按预期工作正常 –

1

发现错误工作。 当我在不同的浏览器环境(新标签)中使用控制台时,它工作。我找到的错误是python的Dajaxice库,它显然破坏了本地xhr对象的一些属性。感谢您的帮助,让我想到...... :-)

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