You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
3 years ago
|
window.onload = () => {
|
||
|
form = document.querySelector("form");
|
||
|
submit = document.querySelector("input[type=submit]");
|
||
|
const submitText = submit.value;
|
||
|
form.addEventListener("submit", (event) => {
|
||
|
event.preventDefault();
|
||
|
var data = "";
|
||
|
for (var i = 0; i < form.children.length; i++) {
|
||
|
const element = form.children[i];
|
||
|
if (i > 0) {
|
||
|
data += "&";
|
||
|
}
|
||
|
if (element.hasAttribute("name")) {
|
||
|
data += `${element.name}=${element.value}`;
|
||
|
}
|
||
|
}
|
||
|
const http = new XMLHttpRequest();
|
||
|
http.open("POST", "http://127.0.0.1:8080", true);
|
||
|
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
||
|
http.onreadystatechange = () => {
|
||
|
if (http.readyState == 4 && http.status == 200) {
|
||
|
form.reset();
|
||
|
resetSubmit();
|
||
|
clearTimeout(failTimeout);
|
||
|
alert("Form submitted successfully");
|
||
|
}
|
||
|
}
|
||
|
http.send(data);
|
||
|
submit.disabled = true;
|
||
|
submit.value = "Sending...";
|
||
|
const resetSubmit = () => {
|
||
|
submit.disabled = false;
|
||
|
submit.value = submitText;
|
||
|
};
|
||
|
const failTimeout = setTimeout(() => {
|
||
|
resetSubmit();
|
||
|
alert("Form submission failed")
|
||
|
}, 5000);
|
||
|
});
|
||
|
};
|