【问题标题】:jQuery: Ajax before submitting formjQuery:提交表单之前的 Ajax
【发布时间】:2013-10-23 00:24:11
【问题描述】:

在提交表单但在发送之前,我在弄清楚如何执行操作时遇到了一些麻烦。问题是操作标签将用户重定向到不同的站点,当我单击提交按钮时,我需要 AJAX 发送电子邮件。即使 AJAX 失败,用户也应该被重定向。

我阅读了有关 $.ajax() 的信息,但在 jQuery 得到响应之前,我不明白如何停止表单提交。是自动完成的吗?

在另一个线程上,我看到建议使用输入类型“按钮”而不是提交。 我知道这将允许我手动执行 $(form).submit();后来,给了我更好的控制,但我仍然努力完全理解前面的部分。

我知道这个问题的答案很简单,但我可能因为把自己复杂化而陷入困境!

感谢您的帮助!

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    要在 ajax 请求完成之前阻止提交表单,您可以禁用 async 选项。

    $.ajax({
      url: 'my_url.php',
      async:false,
      .....
    });
    

    【讨论】:

    • 那么当$.ajax() 收到响应时,剩下的jquery代码会执行吗?我是否必须用任何特别的东西设置成功参数?
    • 不,你不需要对成功参数做任何特别的事情。当您将async 设置为false 时,$.ajax 函数在收到响应之前不会返回,因此您的其余代码将延迟到请求完成。
    • 这个解决方案非常容易实施并且效果很好,谢谢!
    【解决方案2】:

    你在别处看到的建议正是你需要做的。

    您需要立即取消提交。 (return falseing 或致电e.preventDefault()) 然后,当您收到服务器的回复时,您可以在 AJAX 回调中重新提交表单。
    (只要确保您第二次不再执行 AJAX 请求)

    【讨论】:

      【解决方案3】:

      您可以使用表单的onSubmit 属性。

      <form action="./something.php" method="post" onSubmit="someFunction();">
      

      如果函数返回true,则执行默认操作,否则阻止默认操作。

      【讨论】:

        猜你喜欢
        • 2023-03-02
        • 2017-09-05
        • 2011-08-16
        • 1970-01-01
        • 2014-03-23
        • 2021-09-30
        • 2011-04-23
        • 2012-04-05
        相关资源
        最近更新 更多