Javascript 如何使表单在提交之前等待ajax完成?

Javascript 如何使表单在提交之前等待ajax完成?,javascript,jquery,ajax,preventdefault,Javascript,Jquery,Ajax,Preventdefault,因此,我只想在使用ajax从数据库验证条件时提交一个表单。如果条件为true,我将使用preventDefault()方法,即如果用户不是常驻用户,则在ajax successs函数中将变量设置为true并调用preventDefault(),但是,执行此操作时,表单始终提交。即使async设置为false,它也不会等待ajax完成。 这是密码 $('#button').click(function(e) { if ($('#ca_resident').prop('check

因此,我只想在使用ajax从数据库验证条件时提交一个表单。如果条件为true,我将使用
preventDefault()
方法,即如果用户不是常驻用户,则在
ajax successs函数中将变量设置为true
并调用
preventDefault()
,但是,执行此操作时,表单始终提交。即使async设置为false,它也不会等待ajax完成。 这是密码

  $('#button').click(function(e) {    
    if ($('#ca_resident').prop('checked') == true) { 
      amount=$('#user-amount').val().replace(/[,]/g,"");
      project_name=$('#project_name').val();
      var not_resident = false;
       $.ajax({
        url: '/main/verify_residence/',
        type: 'POST',
        aysnc: false,
        data: {
          value: amount,
          name: project_name
        },
        success: function(data){
          $("#verify_residence").html(data);
          not_resident = true;
        },
        dataType: 'html'
      }); 
    }
    if(not_resident){
      e.preventDefault();
    }
  });

那不行。成功将在以下时间后激发:

if(not_resident){
      e.preventDefault();
    }
因为它是异步的。您需要始终取消按钮单击,然后在点击成功后提交表单:

$('#button').click(function(e) {    
   var $form = $(this).closest('form');   

   if ($('#ca_resident').prop('checked') == true) { 
      amount=$('#user-amount').val().replace(/[,]/g,"");
      project_name=$('#project_name').val();
       $.ajax({
        url: '/main/verify_residence/',
        type: 'POST',
        aysnc: false,
        data: {
          value: amount,
          name: project_name
        },
        success: function(data){
          $("#verify_residence").html(data);
          $form.submit();
        },
        dataType: 'html'
      }); 
    }


    e.preventDefault();

  });

在调用ajax之前和在
ajax.success
上防止默认值,然后可以
form.submit()
尝试返回false;而不是e.preventedeafult()。@Vogel612我以前试过这样做。这将防止表单在任何情况下提交。表单应该在用户未通过居留检查时提交谢谢Liam,但我需要的是,如果用户未通过居留条件,表单不会提交,正好相反<在
成功函数中的code>e.preventDefault()
。还是没有luck@user2488801如果未命中
成功
,则可以执行此操作。表格将不提交<代码>e.preventDefault()停止表单始终提交<代码>$form.submit()仅在点击
success
时发布
success
是指用户未通过验证且不允许进一步查看的情况,即没有表单提交。因此,成功实际上就是失败?!有趣。那么,当它真正成功时会发生什么呢?一个div显示“对不起,您不能注册”消息,然后表单应该停止提交