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