在提交表单时,如果提交()没有立即运行,并且接下来几行Javascript在实际提交表单之前运行,似乎有时间问题。
var eButtons = document.querySelector("#ContactUs_form #buttons");
function submitForm() {
document.getElementById("ContactUs_form").submit();
eButtons.origInnerHtml = eButtons.innerHTML;
eButtons.innerHTML = "Saving form...";
}
<form id="ContactUs_form" method="post" action="ContactUs.php" onsubmit="submitForm();">
<div id="buttons">
<input id="btnSubmit" name="btnSubmit" type="submit" value="Submit" class="fLeft">
<input id="btnReset" name="Reset" type="reset" value="Reset" class="fRight">
</div>
</form>
为什么submit()没有立即提交表单的任何想法?
编辑: 应该更充分地解释,表格已经提交但不是立即提交。 eButtons.innerHTML替换发生在表单提交之前,因此当表单最终被提交时,它不包含应该执行的$ _POST(“btnSubmit”)。
答案 0 :(得分:1)
JavaScript阻止了一切。浏览器不会重新绘制DOM,运行另一个函数(例如,响应事件)或导航到新页面,直到当前函数执行完毕。
无论如何,任何导航都是异步的。如果服务器显示204 No Content,浏览器必须等到响应开始到达。只有在获得新页面的响应后,页面才会开始卸载。