【问题标题】:Ajax inside submitHandler form submit not workingsubmitHandler 表单中的 Ajax 提交不起作用
【发布时间】:2015-06-25 07:51:52
【问题描述】:

我正在注册用户,

我使用 jquery 验证插件验证字段。

在“submitHandler”中,我调用了 Ajax,然后如果响应正常,则提交表单 ....但未提交表单。但我收到“OK”的警报。

这是我的代码,

jQuery(document).ready(function(){
// Setup form validation on the #register-form element
jQuery("#reg_form").validate({
// Specify the validation rules
errorElement: "span",
rules: {
    fname:  {
    required: true,
    maxlength: 12,
    minlength: 4,
    remote: {url: "<?php echo get_template_directory_uri() ?>/ajax-checkusername.php", type : "post"}
    },
    lname: "required",
    phone: {required:true,number: true},
    address: "required",
    email: {
    email: true,
    required: true,
    remote: {url: "<?php echo get_template_directory_uri() ?>/ajax-checkemail.php", type : "post"}
    },
    password: "required",
    cpassword: {
    required: true,
    equalTo: "#password"
    },
    profile_picture: {
    accept: "image/*"
    }
},
// Specify the validation error messages
messages: {
    fname:  {
    email: "This field is required.",
    minlength: "Please enter atleast 4 characters",
    maxlength: "Too much characters",
    remote: "username already in use!",
    },
    lname: "This field is required.",
    phone: {
    required: "This field is required",
    number: "Please Enter Number"
    },
    address: "This field is required.",
    email: {
    required: "Please Enter Email!",
    email: "This is not a valid email!",
    remote: "Email already in use!",
    },
    password: "This field is required.",
    cpassword :{
    required:"This field is required.",
    equalTo:"Password Not matched."
    },
    profile_picture: {
    accept:"Please Insert Image"
    }
},
submitHandler: function(form) { 
    var frm = $(form);alert(frm);

    if (jQuery("#g-recaptcha-response").val()) {

        jQuery.ajax({
            type: 'POST',
            url: "<?php echo get_template_directory_uri(); ?>/ajax_verify_captcha.php", // The file we're making the request to
            dataType: 'html',
            async: true,
            data: {
                captchaResponse: jQuery("#g-recaptcha-response").val()
            },
            success: function (data) {
                alert(data); 

                //jQuery('#reg_form').get(0).submit();
                if(data=="OK"){
                    frm.submit();

                }

                //alert("everything looks ok");
              // jQuery('#reg_form')[0].submit(); 

            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert("You're a bot");
                alert(XMLHttpRequest);
                return false;
            }

        });


    } else {
        alert("Please fill the captcha!");
        return false;
    }


}
});
});

【问题讨论】:

    标签: php jquery html ajax jquery-validate


    【解决方案1】:

    我要检查的第一件事是 if 语句中的值。此外,您可以只使用 (data) 来查看它是否已定义,或者使用 .length 来查看它是否设置为任何内容。

    console.log(data=="OK");
    if(data.length){
      frm.submit();
    }
    

    您可能应该返回一个布尔值或一个数字并使用 parseInt() 来确保您比较相同数据类型的两个变量。

    【讨论】:

    • thx..Hosch 为您的努力,但如果条件仍无法正常工作,则在删除条件后......
    猜你喜欢
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多