如何在ajax调用期间停止表单提交

IT技术 javascript jquery ajax
2021-03-04 09:04:03

我只能修改ajax调用中的代码。当我单击名为$('#form1').

$('#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.
          }
       }
    });
 });
6个回答

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

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

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

  return false;  // Stop form submit
}

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

点赞。迄今为止唯一正确的答案。AJAX 异步工作!
2021-05-21 09:04:03

你也可以使用 preventDefault()

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

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
        }
    }
    });
});

放一个

return false;

这应该停止该功能以继续

您需要阻止表单提交

onclick="ajaxcall(); return false;"

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

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