Почему HTTP-AJAX-запрос отправляется два раза? Форму отправляю без данных.
Кроме того, (если не обновлять страницу) при каждом последующем нажатии кнопки отправки, количество запросов увеличивается на один. При втором нажатии - три запроса уйдут, при третьем - четыре, и т. д.
Ванильный JS и Go-сервер (самописный).
Я догадываюсь, что два раза запрос идёт из-за наличия
submit и потом ещё
xhr.send()... Но как правильно?
Код мой:
HTML:
<form id="id_Form">
<button id="id_button" onclick="ClickButton()">Ok</button>
</form>
JS:
function ClickButton() {
let myForm = document.querySelector('#id_Form');
myForm.addEventListener('submit', function(event) {
event.preventDefault();
// Здесь кнопка нажимается только если она активна. В HTML убрал класс, для упрощения.
if (this.querySelector('#id_button').classList.contains('butt_Activ')) {
let xhr = new XMLHttpRequest(); // Создан AJAX-транспорт.
let formData = new FormData(myForm); // Создан новый Объект-FormData.
// При завершении запроса:
xhr.onloadend = function() {
if (xhr.status === 200) {
_ При успешном ответе сервера - вставляем ответ как значение в кнопку. _
return;
} else {
_ При ошибке запроса - сообщение об ошибке. _
return;
}
}
xhr.open('POST', '/my_form');
xhr.send(formData);
}
});
}