【发布时间】:2015-04-21 08:08:28
【问题描述】:
我正在尝试为文件上传创建进度条,但由于某种原因,XHR 进度响应最后只触发一次。但是,如果我打开 firebug 窗口,它可以 100% 正常工作(在整个文件上传过程中触发)。我正在本地主机上测试这个。
我的代码很长,但要点如下:
is_uploading = $.ajax({
url: "/includes/upload.php?a=" + a_id,
type: "POST",
data: formdata,
processData: false,
contentType: false,
dataType: "JSON",
xhr: function () {
var xhr = new window.XMLHttpRequest();
xhr.upload.addEventListener("progress", function (evt) {
alert('yay');//test to see if the event is firing...this should be alerting A LOT
if (evt.lengthComputable) {
//do stuff
}
}, false);
return xhr;
}
...more options here beforesend, success, etc
在过去的几个小时里,我一直在努力解决这个问题,因此我们将不胜感激。我不知道为什么它在 firebug 控制台打开的情况下工作,但只有在它关闭时才会在最后触发......
【问题讨论】:
-
一般你还会添加一个
xhr.addEventListener("progress" ...处理程序,你看过网上很多例子吗? -
是的,我在网上看了很多例子。我相信您已经知道,xhr.addEventListener 将用于监视下载事件。我只对上传感兴趣。
-
根据here 提到的最新支持,尝试在
xhr而不是xhr.upload上注册事件处理程序 -
我已经尝试在 xhr 上注册它,但无济于事。从您链接的支持文档中:“下载和上传传输都存在进度事件。下载事件在 XMLHttpRequest 对象本身上触发,如上面的示例所示。上传事件在 XMLHttpRequest.upload 对象上触发,如如下图”
-
为什么dataType会是
JSON?
标签: javascript jquery xmlhttprequest