我正在尝试使用 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/