gpt4 book ai didi

javascript - 没有 jquery 或 iframe 的 AJAX 文件上传/表单提交?

转载 作者:数据小太阳 更新时间:2023-10-29 05:08:27 24 4
gpt4 key购买 nike

是否可以在没有 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com