作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
是否可以在没有 jQuery 或 IFrame 的情况下提交 AJAX 表单(所以只是纯 JavaScript)?我目前正在发送到一个有效的 struts fileUploadAction。该操作的代码是否仍适用于异步提交,或者是否需要添加其他内容来获取异步表单提交?
我正在使用 struts 1.x,当前我的表单是:
<html:form action="fileUploadAction" method="post" enctype="multipart/form-data">
...form elements...
<html:file property="theFile" />
...other elements...
</html:form>
是否可以提交此表单,从而使用 AJAX 上传文件?
最佳答案
如果我理解正确,您可以使用以下代码异步上传文件。随意修改
var AjaxFileUploader = function () {
this._file = null;
var self = this;
this.uploadFile = function (uploadUrl, file) {
var xhr = new XMLHttpRequest();
xhr.onprogress = function (e) {
...
};
xhr.onload = function (e) {
...
};
xhr.onerror = function (e) {
...
};
xhr.open("post", uploadUrl, true);
xhr.setRequestHeader("Content-Type", "multipart/form-data");
xhr.setRequestHeader("X-File-Name", file.name);
xhr.setRequestHeader("X-File-Size", file.size);
xhr.setRequestHeader("X-File-Type", file.type);
xhr.send(file);
};
};
AjaxFileUploader.IsAsyncFileUploadSupported = function () {
return typeof (new XMLHttpRequest().upload) !== 'undefined';
}
if (AjaxFileUploader.IsAsyncFileUploadSupported) {
ajaxFileUploader = new AjaxFileUploader();
$("form").submit(function () {
var uploader = $("#fileUploader")[0];
if (uploader.files.length == 0) {
return;
} else {
ajaxFileUploader.uploadFile(
"/YourUploadUrl",
uploader.files[0]);
}
return false;
});
}
要上传表单,请使用 FormData 类,用表单值填充它并使用 XHR 发布它。
更新:对于 HTML4,请尝试以下操作
关于javascript - 没有 jquery 或 iframe 的 AJAX 文件上传/表单提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11506510/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!