获取未执行完的ajax,jquery的ajax请求尚未完成,就会接着执行后面的代码吗?

这篇博客探讨了在前端注册表单中如何通过AJAX进行异步验证用户名和邮箱是否已注册的问题。作者遇到的问题是,尽管将状态变量`status`设置为`true`并在回调函数中根据验证结果更新,但`status`的判断仍然先于AJAX回调执行。博客内容详细展示了表单验证和提交的JavaScript代码,包括正则表达式检查和服务器交互。
摘要由CSDN通过智能技术生成

当一个注册表单的提交按钮点击后,通过绑定的时间来确定用户名、邮箱等是否有效,最后来确定是否提交表单。先设置一个变量status值为true,然后通过ajax来判断用户名、邮箱等是否已经注册,如果已注册就在回调函数中设置status的值为false,最后再判断status的值是true还是false来决定是否提交。判断status的代码写在ajax的后面,但是还是先执行了判断status的代码,再执行了ajax回调函数中设置status的代码,不知道该怎么做?

window.cb = {};

cb.register={};

$('#register-submit').click(function(){

var $self = $(this);

var $form = $(this).closest('#register-form');

var $username = $form.find('#register-username');

var username = $username.val();

cb.register.status = true;

if(!username.match(/^[0-9a-z_\u4e00-\u9af5]{2,14}$/i))

{

$username.next('span').remove();

$username.after('无效的用户名');

cb.register.status = false;

}

else

{

$username.next('span').remove();

$.post('/auth/ajax',{username:username},function(data){

if(data.status==false)

{

$username.after('用户名已注册');

cb.register.status = false;

}

},'json');

}

var $email = $form.find('#register-email');

var email = $email.val();

if(!email.match(/^[0-9a-z_\-]+@[0-9a-z_\-]+\.[a-z]{2,4}$/i))

{

$email.next('span').remove();

$email.after('无效的邮箱');

cb.register.status = false;

}

else

{

$email.next('span').remove();

$.post('/auth/ajax',{email:email},function(data){

if(data.status==false)

{

$email.after('邮箱已注册');

cb.register.status = false;

console.log(cb.register.status);

}

},'json');

}

var $pwd = $form.find('#register-password');

var pwd = $pwd.val();

if(!pwd.match(/^[0-9a-z_\-#@$*%&]{6,16}$/i))

{

$pwd.next('span').remove();

$pwd.after('无效的密码');

cb.register.status = false;

}

console.log('hello');

console.log(cb.register.status);

return false;

if(cb.register.status==false){

return false;

}

$.post('/auth/register',{email:email,name:username,password:pwd},function(data){

if(data.status==true)

{

$self.css('display','none');

var $message = $('#message');

var s1 = '注册成功';

var s2 = '一封邮件已发送到邮箱,请在1小时内验证(过期后需重新发送验证邮件)';

$message.find('.message-body').append(s1+s1);

}

else

{

var $token = $form.find('#token');

$token.attr('name',data.token.name);

$token.attr('value',data.token.value);

$form.find('.submit-tips').remove();

$form.prepend('

注册失败,请重新提交
');

}

},'json');

return false;

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>