Jquery表单验证ajax


Jquery form validate ajax

我有多个ajax提交的问题。每当我点击按钮提交,每次点击是一个ajax POST调用。

下面代码

submitHandler: function(form,event) {
            //show popup phonenumber check
            //check captcha on server side
            var fm = $(form);
            $(fm).unbind('submit').submit();
            $("#registration_phone_check").fadeIn();
            var country_number = $("#myDropdown")[0].innerText+fm[0].elements['phone'].value;
            country_number = country_number.replace(/('r'n|'n|'r)/gm,"");//delete all break lines in string
            $("#phone_check").val(country_number);
            //send code
            $("#check_phone_send_code").click(function(e){
                e.preventDefault();
                var language = "en";
              $("#phone_confirmations").fadeIn();
                    ajax.post('/'+language+'/registration', {
                        email:fm[0].elements['email'].value,
                        uname:fm[0].elements['uname'].value,
                        surname:fm[0].elements['surname'].value,
                        birthday:fm[0].elements['birthday'].value,
                        password:fm[0].elements['password'].value,
                        phone:$("#phone_check").val(),
                        grecaptcha_response:grecaptcha.getResponse()
                    }).done(function(resp) {
                //code when ajax success or some error is returned
                    }).fail(function(resp){
                        grecaptcha.reset();
                    });
                });
        },

所以问题是,我怎么能只发送一次ajax没有多个ajax POST请求。

一种方法是定义一个全局变量来锁定或解锁post请求。像这样:

var submitting = false;
...
$("#check_phone_send_code").click(function(e){
   if(submitting == false){// check locking variable
     submitting = true; // lock posts
     ajax.post('/'+language+'/registration', {
                    email:fm[0].elements['email'].value,
                    uname:fm[0].elements['uname'].value,
                    surname:fm[0].elements['surname'].value,
                    birthday:fm[0].elements['birthday'].value,
                    password:fm[0].elements['password'].value,
                    phone:$("#phone_check").val(),
                    grecaptcha_response:grecaptcha.getResponse()
                }).done(function(resp) {
                   submitting = false; // unlock posts
            //code when ajax success or some error is returned
                }).fail(function(resp){
                    submitting = false;  // unlock posts
                    grecaptcha.reset();
                });
   }
}