javascript - 使用 JavaScript 同时提交 2 个表单

标签 javascript html forms

我正在尝试使用 javascript 同时提交 2 个表单。 但是,似乎只打开了第二个提交,而不是第一个。

代码相当简单:

<html>
<body>
<form id="report_0" method="POST" target="_blank" action="https://www.google.com">
   <input type="hidden" name="test1" value="1">
   <input type="submit" value="report_0">
</form>
<form id="report_1" method="POST" target="_blank" action="https://www.google.com">
   <input type="hidden" name="test2" value="2">
   <input type="submit" value="report_1">
</form>
<script>
    document.getElementById("report_0").submit();
    document.getElementById("report_1").submit();
    </script>
</body>
</html>

不能使用 ajax 或等价物,因为它必须是“本地”POST(由于 CORS 问题)

我在某处读到您不能一次提交 2 个表单,这对我来说没有意义。我已经尝试将目标从“_blank”更改为“form1”和“form2”,但仍然没有。

非常感谢您的协助:)

编辑

这是我实际使用的:

for (....) {
       var form = document.createElement("form");
       form.setAttribute("name", "report_"+i);
       form.setAttribute("method", "POST");
       form.setAttribute("target", "_blank");
       form.setAttribute("action", action);

       for (var key in parms) {
           var field = document.createElement("input");
           field.setAttribute("type", "hidden");
           field.setAttribute("name", key);
           field.setAttribute("value", parms[key]);
           form.appendChild(field);
       }
       console.log(form);
       document.body.appendChild(form);
       form.submit();
       document.body.removeChild(form);
}

最佳答案

这不是最漂亮的做法,但我认为无论如何分享它会很好。我最终使用 setTimeout 解决了这个问题:

var requestDelay = 2000;
document.getElementById("form-a").submit();

setTimeout(function() {
    document.getElementById("form-b").submit();
}, requestDelay);

这样,它会等到form A(可能,估计需要2秒)被提交,然后提交form B。您可能需要尝试使用 requestDelay 来满足您的需求。

关于javascript - 使用 JavaScript 同时提交 2 个表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17540875/

相关文章:

javascript - 转义通过 POST 发送的 jQuery 数据

javascript - 如何在 AngularJS 项目中使用 swagger 生成 "javascript-closure-angular-client"

javascript - AngularJS $routeProvider 问题

html - 即使我在 bootstrap 中使用 col-lg-6,如何使我的表单控件内联?

css - 如何让文本显示在先前的 div 区域之外?

reactjs - React-bootstrap - Form.Control defaultValue 重新渲染时未更新

javascript - 右键单击 Div(信息框)被禁用。我如何启用它

CSS垂直居中内联元素?

php - 如何在 symfony2 中使用具有多个不同表单小部件的实体字段类型数组

javascript - 让 chrome、IE 8 和 Firefox 提交相同表单的奇怪方法