我想submitForm()
基于XMLHttpRequest
和实现以下简单的 JavaScript 函数FormData
。此函数在第一个上运行良好,<form>
但在第二个上失败:该函数应该使用input.formaction
而不是form.action
.
如何检测按下<input>
并检索相应的formaction
?
(大多数 SO 答案建议使用框架(如 jquery)进行此类处理。但我认为仅学习纯 JavaScript 比学习 JS 框架更容易。如果您确信可以使用框架更简单地编写此代码段,请提出你的版本。还请解释为什么你建议的框架在这种情况下是相关的/相关的/合适的。我可能决定学习你最喜欢的 JS 框架......编辑:我发现了这个类似的问题:JQuery get formaction and formmethod)
<!DOCTYPE html>
<html>
<head>
<script>
function submitForm(form)
{
var xhr = new XMLHttpRequest();
xhr.onload = function() { alert (xhr.responseText); }
xhr.open ("post", form.action, true);
xhr.send (new FormData (form));
return false;
}
</script>
</head>
<body>
<form action="first.php" onsubmit="submitForm(this);">
<fieldset>
<legend>First</legend>
<input type="text" name="data" />
<input type="submit" />
</fieldset>
</form>
<form onsubmit="submitForm(this);">
<fieldset>
<legend>Second</legend>
<input type="text" name="data" />
<input type="submit" value="A" formaction="second-A.php" />
<input type="submit" value="B" formaction="second-B.php" />
</fieldset>
</form>
</body>
</html>
(在阅读XMLHttpRequest to Post HTML Form、使用 XMLHttpRequest 发送 POST 数据和优秀的MDN 文档之后,我已经实现了这个片段。)