async function formClick(ev) { ev.preventDefault(); let { target } = ev; let fData = new FormData(target); let file = target.querySelector('input[type=file]'); if (file) file.value = null; let fetched = await fetch(target.action, { 'method': 'POST', 'body': fData }); let json = await fetched.json(); target.querySelector('.form-message').textContent = json.message; if (json.redirect && json.success) { setTimeout(function () { window.location.href = json.redirect; }, 2000); } } window.onload = function () { document.addEventListener('submit', formClick); }