我想通过点击“提交”按钮发送表单。原始表单仅包含一个 CSRF 令牌。当用户点击提交时,我希望能够使用从页面上收集的数据,通过纯 JavaScript 来填充表单。
以下是带有表单和待注入的输入字段的 HTML 代码:
<input id="user-input" type="text" name="userInput">
<form id="best-form-ever" method="post" action="/amaze-me">
<input type="hidden" name="_csrf" value="xyz1234">
<button id="submit-form" name="submit-form">提交</button>
</form>
目前我已经编写了以下JavaScript代码:
document.querySelector("#best-form-ever").addEventListener("submit", this.handleSubmit, false);
handleSubmit(event) {
event.preventDefault();
const form = document.getElementById("best-form-ever");
const userInput = document.querySelector("#user-input").value;
const payload = new FormData(form);
payload.append("userInput", userInput);
payload.submit(); /* 这个方法不起作用 :( */
}
遗憾的是,由于 FormData:submit
不是一个函数,所以表单无法通过这种方式发送。
所以我的问题是:
如何在提交事件后向表单中注入额外数据并成功发送表单?