在AJAX表示成功之后,将相同的表单提交到另一个页面

时间:2016-08-30 13:29:24

标签: php jquery ajax

我有一个通过AJAX验证的表单,问题是在ajax给出响应1之后,它应该将相同的表单提交到同一页面。 由于我使用了$('#bigform').submit(),因此不允许我将表单提交给驻留在同一页面上的PHP。

$(document).ready(function() {
    $('#bigform').submit(function(event) {
        var captcha_checks = $('#password_again').val();
        $(this).validate();
        if (!$(this).valid()) 
            return false;

        $.ajax({
            type: 'post',
            url: 'http://trigma.com/mobile-app-development/verify_captcha.php',
            data: { captcha_checks: captcha_checks },
            dataType: 'html',
            success: function(data) {
                if (data == 1) {
                    $('#bigform').submit();
                }
                if (data == 2) {
                    $('#captcha_error').text("Invalid Captcha! Please fill captcha carefully");
                }
            }
        });
        event.preventDefault();
    }); 
});

3 个答案:

答案 0 :(得分:2)

您可以添加如下布尔变量:

 $(document).ready(function() {
    var first = true;
        $('#bigform').submit(function(event) {

        if(first){
            var captcha_checks = $('#password_again').val();
            $(this).validate();
            if (!$(this).valid()) 
                return false;

            $.ajax({
                type: 'post',
                url: 'http://trigma.com/mobile-app-development/verify_captcha.php',
                data: { captcha_checks: captcha_checks },
                dataType: 'html',
                success: function(data) {
                    if (data == 1) {
                        first = false;
                        $('#bigform').submit();
                    }
                    if (data == 2) {
                        $('#captcha_error').text("Invalid Captcha! Please fill captcha carefully");
                    }
                }
            });
            }
            else
            {
             $('#bigform').submit();
            }
            event.preventDefault();
        }); 
    });    

答案 1 :(得分:1)

这是一件奇怪的事情,但是如果你必须使用一个单独的函数,比如:

  $(document).ready(function(){
  function onSubmit(theElement){
       var captcha_checks = $('#password_again').val();
        theElement.validate();
        if (!theElement.valid()) return false;
        $.ajax({
          type: 'post',
          url: 'http://trigma.com/mobile-app-development/verify_captcha.php',
          data: {captcha_checks:captcha_checks},
          dataType: 'html',
          success: function(data) {
            if(data == 1){
                onSubmit(theElement);
            }
            if(data == 2){
                $('#captcha_error').text("Invalid Captcha! Please fill captcha carefully");
            }
          }
        });
        event.preventDefault();
    }
  $('#bigform').submit(function(event){
      onSubmit($(this));
  });   
     });
</script>

答案 2 :(得分:0)

为什么不为 SUBMIT 按钮设置click事件处理程序呢?

$('#submit-btn').click(function(event){
    event.preventDefault();

    var form = $(this).closest('form');
    $(form).validate();
    if (!$(form).valid()) 
        return false;

    //...your AJAX call...
        if(data == 1){
            form.submit();
        }
    //...

});