Я хочу реализовать следующую простую функцию JavaScript submitForm()
на основе XMLHttpRequest
и FormData
. Эти функции хорошо работают на первом <form>
, но не работают на втором: функция должна использовать input.formaction
вместо form.action
.
Как обнаружить нажатый <input>
и получить соответствующий formaction
?
(Большинство ответов SO советуют использовать фреймворк (как jquery) для такой обработки. Но я думаю, что изучение исключительно чистого JavaScript проще, чем изучение также JS-фреймворков. Если вы уверены, что этот фрагмент можно написать проще с использованием структуры, пожалуйста, предложите свою версию. Пожалуйста, объясните также, почему ваша рекомендуемая структура подходит/актуальна/подходит в этом случае. Я могу решить изучить вашу любимую структуру JS... РЕДАКТИРОВАТЬ: Я нашел этот похожий вопрос: JQuery получить форму и форму формы)
<!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 для отправки HTML-формы, Отправка данных POST с помощью XMLHttpRequest и отличную документацию MDN.)