【发布时间】:2018-09-26 19:01:40
【问题描述】:
我有一个使用 jQuery 和 Ajax 来帮助管理多个文件上传的表单。一切正常,除了成功重定向。该脚本由堆栈用户 prateekkathal 提供,如下所示:
$(document).ready(function () //Setting up on Document to Ready Function
{
$("#btnUpload").click(function (event) {
//getting form into Jquery Wrapper Instance to enable JQuery Functions on form
var form = $("#inquiry");
//Serializing all For Input Values (not files!) in an Array Collection so that we can iterate this collection later.
var params = form.serializeArray();
//Getting Files Collection
var files = $("#File1")[0].files;
//Declaring new Form Data Instance
var formData = new FormData();
//Looping through uploaded files collection in case there is a Multi File Upload. This also works for single i.e simply remove MULTIPLE attribute from file control in HTML.
for (var i = 0; i < files.length; i++) {
formData.append(files[i].name, files[i]);
}
//Now Looping the parameters for all form input fields and assigning them as Name Value pairs.
$(params).each(function (index, element) {
formData.append(element.name, element.value);
});
//disabling Submit Button so that user cannot press Submit Multiple times
var btn = $(this);
btn.val("Uploading...");
$.ajax({
url: "relay2.php", //You can replace this with MVC/WebAPI/PHP/Java etc
method: "post",
data: formData,
contentType: false,
processData: false,
success: function () {
//Firing event if File Upload is completed!
alert("Upload Completed");
btn.prop("disabled", false);
btn.val("Submit");
$("#File1").val("");
window.location.replace('https://www.pmd-fla.com/thankyou2.html');
},
});
});
});
我试图弄清楚如何在表单提交后将用户重定向到感谢页面。该脚本调用表单处理程序脚本,该脚本应该将用户重定向到感谢页面,但我认为success: function () 会妨碍您。我不确定如何编辑成功函数以将用户重定向到感谢页面。
任何指导将不胜感激。
编辑:我应该注意,当我在表单操作中包含表单处理程序的路径时,它会按预期工作,但会发送两次表单数据。我猜这是因为表单处理程序被调用了两次。一次来自 action 属性,一次来自上述脚本。
【问题讨论】:
-
如果您想在表单提交后将用户发送到另一个页面,为什么要使用 AJAX 调用?那么为什么不直接使用常规的 html 表单提交呢?使用 AJAX 的目的是让它们保持在同一页面上。
-
@jwebb 该操作在 ajax 中有错误情况。如果他只是使用表单发布,当出现错误时用户将在错误的页面上
-
@Seth McClaine 错误也可以通过 HTML 表单发布来处理,而无需转到其他页面。
-
说实话,我不知道我需要使用Ajax。这是我能找到的唯一一个似乎可以完成我想要做的事情的脚本。最终目标是允许用户通过单个输入字段上传多个文件,并将这些文件附加到提交时发送的电子邮件中。我的表单处理程序脚本不支持从单个输入上传多文件,因此我正在尝试找到解决方法。
-
啊听起来你真正的问题是无法支持从单个输入上传多个文件