jQuery:提交表单之前的Ajax


jQuery: Ajax before submitting form

我在提交表单时弄清楚如何执行操作时遇到了一点麻烦,但在发送表单之前。问题是动作标记将用户重定向到不同的站点,当我单击提交按钮时,我需要 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则执行默认操作,否则将阻止默认操作。