2011-09-23 59 views
1

我只能修改Ajax调用 一个Ajax调用所做的代码的时候,当我点击如何阻止表单提交在一个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? you can only modify the code in the ajax call 
    } 
    } 
}) 
}) 

回答

6

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

但是,请在函数结束时返回false。

function SubmitHandler(){ 
    // Your AJAX call here 
    // blah blah blah 

    return false; // Stop form submit 
} 

如果在成功处理程序中确实非常重要,那么您可以同步执行呼叫。

+0

Upvote。迄今为止唯一正确的答案。 AJAX异步工作! – avall

-2
命名为$(“#Form1的”)的形式提交

假设形式的ID为#form1,你可以绑定一个提交处理程序,并从它返回false:

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

伙计事件已被触发,您的代码不起作用 – vikingmute

1

将一个

return false; 

这应该停止功能继续

1

回报虚假或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 
     } 
    } 
    }); 
}); 
0

您需要防止的形式提交

onclick="ajaxcall(); return false;" 

,做在你的代码:

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

您可以更改按钮式“提交”,“按钮”,然后使用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>