我有多个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();
});
}
}