Рассмотрим следующий фрагмент:
$('#myBtn').click(function(e) {
e.preventDefault();
var formElement = $(this).closest('form')[0];
var request = new XMLHttpRequest();
request.open("POST", "https://posttestserver.com/post.php");
request.send(new FormData(formElement));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="POST" action="https://posttestserver.com/post.php">
<input type="text" name="wtf" />
<button type="submit" name="lol" value="cats" id="myBtn">
Huh
</button>
</form>
(Откройте инструменты разработчика и следите за HTTP-запросами.)
Когда вы нажимаете кнопку, любой текст, введенный вами в текстовое поле, включается в запрос POST. Однако пары lol=cats
из самой кнопки нет.
Как я могу заставить FormData включать данные, заданные кнопками ?