【问题标题】:Is it possible to submit form multiple times with different action?是否可以使用不同的操作多次提交表单?
【发布时间】:2014-06-16 11:05:49
【问题描述】:

是否可以通过 HTML 的不同操作多次提交表单。即

document.forms[0].action = "action1.do";  //It insert the data into database and redirect to other page in same tab. 
document.forms[0].submit();

document.forms[0].action = "action2"; // Its generate a report with data inserted by action1 in new tab.
document.forms[0].target = "_blank";
document.forms[0].submit();

表单提交了两次,但问题是第二个是在第一个完成之间提交。

请帮助我如何确保仅在第一个表单完成后才能提交第二个表单。

【问题讨论】:

  • 您有 javascript 拦截提交,然后将数据发布到多个脚本,但这似乎是错误的方法。我认为最好正常发布到服务器上的一个脚本,并让它执行多项任务。
  • 从您的操作 servlet 发送类似“成功”的响应,直到那时禁用该表单并在收到响应时启用它
  • 为什么要提交两次?
  • 因为第一个我正在插入数据,第二个在新选项卡中生成包含插入数据的报告。

标签: javascript forms


【解决方案1】:

提交是异步的:如果你提交,JS会继续运行,浏览器在后台执行操作。 (但它会复制表单,所以是的,你可以安全地做你所做的。)现在,如果你想等待第一个操作完成然后提交第二个操作,你有几个选项,其中最优雅的是 az AJAX 调用,使用 jQuery,类似于:

var formData = $("form").serializeArray();
$.post("http://whatever.xxx", formData, function() {
    //
    // here's your callback!
    // you want do the second submit here.
    //
});

在 $.post() 调用的回调函数中,您进行另一个提交。问题解决了。

【讨论】:

  • 您好,dkellner,感谢您的回复。我试过了,但它不起作用,因为我正在向我的操作发送 multipart/form-data。
【解决方案2】:

您需要将表单提交作为 ajax 请求发送,并在发送时禁用该表单。一旦请求响应您,然后在回调中启用表单/发送下一个请求/等。

【讨论】:

    猜你喜欢
    • 2020-05-16
    • 2017-02-10
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2011-03-20
    • 2012-06-07
    • 1970-01-01
    • 2011-03-01
    相关资源
    最近更新 更多