在提交表单时,但在发送表单之前,我在确定如何执行操作时遇到了一些麻烦。问题是动作标签将用户重定向到不同的站点,当我单击提交按钮时,我需要AJAX发送电子邮件。即使AJAX失败,也应该重定向用户。
我读到了$ .ajax()但我不明白如何在jQuery获得响应之前停止表单子目录。是自动完成的吗?
在另一个主题上,我看到建议使用输入类型“按钮”而不是提交。 我知道这将允许我手动一个$(表格).submit();后来,给了我更好的控制权,但我仍然完全理解前一部分。
我知道这个问题的答案非常简单,而且我可能会因为让自己变得复杂而乱窜!
感谢您的帮助!
答案 0 :(得分:8)
要在ajax请求完成之前阻止表单提交,您可以禁用async
选项。
$.ajax({
url: 'my_url.php',
async:false,
.....
});
答案 1 :(得分:1)
您在其他地方看到的建议正是您需要做的。
您需要立即取消提交。 (通过return false
或致电e.preventDefault()
)
然后,当您收到服务器的回复时,您可以在AJAX回调中重新提交表单
(只是确保你第二次没有再次执行AJAX请求)
答案 2 :(得分:0)
您可以使用表单的onSubmit
属性。
<form action="./something.php" method="post" onSubmit="someFunction();">
如果函数返回true
,则会发生默认操作,否则将阻止默认操作。