【发布时间】:2013-03-30 09:48:06
【问题描述】:
是否可以使用 jQuery ajax 获取具有非常大文本字段的表单的上传进度? 我认为客户端知道已经发送了多少字节,但是当我使用 Google 搜索时,我只能找到使用服务器站点代码上传文件的解决方案。
这是我的 ajax 请求:
$.ajax({
type: "POST",
url: "index.php?action=saveNewPost",
data: {textbox1: textbox1,textbox2: textbox2},
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
success: function(){
//
}
});
我希望会有类似“onProgress”的参数,其中包含已发送的字节数...
找到解决方案
$.ajax({
xhr: function() {
var req = $.ajaxSettings.xhr();
if (req) {
req.upload.addEventListener('progress', function(event) {
if (event.lengthComputable) {
$('#ajaxFeedbackDiv').html(event.loaded); // = 'test'; //event.loaded + ' / ' + event.total;
}
}, false);
}
return req;
},
type: "POST",
url: "index.php?action=saveNewPost",
data: {textbox1: textbox1,textbox2: textbox2},
contentType: "application/x-www-form-urlencoded;charset=UTF-8"
}
});
这似乎有效,尽管仍有
2 个问题:
- 我的本地主机上的连接太快了,所以很难看到“进度”实际工作。我在同一网络中的第二台 Mac 上安装了这个工具 http://mschrag.github.com,我发现它运行良好。
- 我不确定这是否会在不兼容 XHR/HTML5 的浏览器上回退友好,即只上传没有进度信息?
【问题讨论】:
-
实际上在
XMLHttpRequest对象中确实有一个onprogress回调。但是,它是一个新标准,并非所有浏览器都支持它。 -
请看我上面添加的内容,它有效。感谢您的支持