【问题标题】:How to stop form submit during ajax call如何在ajax调用期间停止表单提交
【发布时间】:2011-09-23 11:25:18
【问题描述】:

我只能修改ajax调用中的代码。 当我单击名为 $('#form1') 的表单中的提交时,会发生 ajax 调用。

$('#form1').submit(function () {
    $.ajax({
       url: 'some.php',
       type: 'POST',
       data: somedata,
       success: function (msg) {
          if (!msg) {
             // I wanna to stop '#form1' submit here,how to do that? I can only modify the code in the ajax call.
          }
       }
    });
 });

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    您需要在成功处理程序之前停止它。因为函数在您的 AJAX 调用后完成执行,所以表单将在您的 ajax 调用发生时提交(当您的 ajax 调用完成时为时已晚)。

    但是是的,将 return false 放在函数的末尾。

    function SubmitHandler(){
      // Your AJAX call here
      // blah blah blah
    
      return false;  // Stop form submit
    }
    

    如果它在成功处理程序中真的很重要,那么您可以同步执行调用。

    【讨论】:

    • 点赞。迄今为止唯一正确的答案。 AJAX 异步工作!
    【解决方案2】:

    你也可以使用preventDefault()

    http://api.jquery.com/event.preventDefault/

    【讨论】:

      【解决方案3】:

      return false 或 event.preventDefault 应该可以帮助您:

      $('#form1').submit(function(){
          $.ajax({
              url:'some.php',
              type:'POST',
              data:somedata,
              success:function(msg){
              if(!msg){
                  //i wanna to stop form1 submit here,how to do that?  you can only modify the code in the ajax call
              }
          }
          });
          return false;
      });
      

      或:

      $('#form1').submit(function(e){
          e.preventDefault();
          $.ajax({
              url:'some.php',
              type:'POST',
              data:somedata,
              success:function(msg){
              if(!msg){
                  //i wanna to stop form1 submit here,how to do that?  you can only modify the code in the ajax call
              }
          }
          });
      });
      

      【讨论】:

        【解决方案4】:

        放一个

        return false;
        

        这应该停止功能继续

        【讨论】:

          【解决方案5】:

          你需要阻止表单提交

          onclick="ajaxcall(); return false;"
          

          并在您的代码中执行此操作:

           $.ajax({
            url:'some.php',
            type:'POST',
            data:somedata,
            success:function(msg){if(msg) $('#form1').submit();}
           })
          

          【讨论】:

            【解决方案6】:

            您可以将按钮类型从“提交”更改为“按钮”,然后使用 jquery form.submit() 提交表单;根据您的条件发挥作用。考虑下面的示例代码:

            <script>
             $(document).ready(function() {
            $("#button-id").click(function() //on click at button
            {
            
            var sel=$("#input").val();
            
                    $.post("ajax-war.php",{jid:sel,rand:Math.random() } ,function(data)
                    {
            
                      if(data=='valid') //if correct login detail
                      {
            
            $('#war_form').submit(); //Submit form
                      }
            
                      else
                      {
                          alert('not valid'); //will not submit form
            
                      }
            });       
            });
            }); 
            
            </script>
            

            【讨论】:

              【解决方案7】:

              假设表单的 ID 是 #form1,您可以绑定一个提交处理程序并从中返回 false:

              $.ajax({
                url:'some.php',
                type:'POST',
                data:somedata,
                success:function(msg){
                  if(!msg){
                   $('#form1').submit(function(){
                     return false; // prevents form submit
                   });
                  }
                }
               })
              

              【讨论】:

              • 老兄事件已经触发,你的代码不工作
              猜你喜欢
              • 2019-12-31
              • 2013-07-31
              • 2017-09-02
              • 1970-01-01
              • 1970-01-01
              • 2015-03-08
              • 1970-01-01
              相关资源
              最近更新 更多