Rap*_*ger 5 forms jquery progress
是否有可能使用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(){
//
}
});
Run Code Online (Sandbox Code Playgroud)
我希望有一个类似"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"
}
});
Run Code Online (Sandbox Code Playgroud)
这似乎有效,尽管还有
2个问题:
您可以在支持 HTML5 的浏览器中使用新XMLHttpRequest对象来实现此目的。它支持progress您可以订阅并收到 AJAX 操作通知的事件。
这是一个例子:
document.getElementById('myForm').onsubmit = function() {
var xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', function(e) {
if (e.lengthComputable) {
var percentage = Math.round((e.loaded * 100) / e.total);
document.getElementById('progress').innerHTML = percentage + '%';
}
}, false);
xhr.open(this.method, this.action, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
alert(xhr.responseText);
}
};
xhr.send(new FormData(this));
return false;
};
Run Code Online (Sandbox Code Playgroud)
这是一个live demo.
| 归档时间: |
|
| 查看次数: |
4138 次 |
| 最近记录: |