//-------------------------用户名检测-------------------------------------
function check_username(reg_username){
var username_regex = new RegExp('^[a-z][0-9a-z_]{5,8}[0-9a-z]$|^[\u4E00-\u9FA5]{2,5}$','i');
error_msg = '';
if(reg_username.length < 6){
error_msg = USERNAME_TOO_SHORT_ERROR;
}else if(reg_username.length > 18){
error_msg = USERNAME_TOO_LONG_ERROR;
}else if(!(username_regex.test(reg_username))){
error_msg = USERNAME_FORMAT_ERROR;
}else{
var regcheck_url = baseUrl+'/user/regcheck?t='+Math.random(0,1);
$.get(regcheck_url,{reg_username:reg_username,type:'username'},function(chechResult){
if(chechResult=='1'){//用户名已经被注册!
error_msg = USERNAME_ALREADY_REG_ERROR;
}else{
error_msg = '0';
}
});
}
return error_msg;
}
注意这里最后的return error_msg不会返回由AJAX检测判断出来的“用户名被注册”的问题,因为,AJAX是异步请求处理,在$.get()做完后,继续执行后面的动作,而并不会立马将err_msg 赋值为USERNAME_ALREADY_REG_ERROR;因此倘若用户名存在的时候,error_msg仍旧没有被赋值,这就是原因所在!!!
-------------------------------------------------------------------------------------------------------------------------------------------
经过思考之后的解决方法:
//-------------------------用户名检测-------------------------------------
function check_username(reg_username){
var username_regex = new RegExp('^[a-z][0-9a-z_]{5,8}[0-9a-z]$|^[\u4E00-\u9FA5]{2,5}$','i');
error_msg = '';
if(reg_username.length < 6){
error_msg = USERNAME_TOO_SHORT_ERROR;
}else if(reg_username.length > 18){
error_msg = USERNAME_TOO_LONG_ERROR;
}else if(!(username_regex.test(reg_username))){
error_msg = USERNAME_FORMAT_ERROR;
}else{
var regcheck_url = baseUrl+'/user/regcheck?t='+Math.random(0,1);
$.ajax({
url:regcheck_url,
type:'get',
async: false,
data:{reg_username:reg_username,type:'username'},
success:function(chechResult){
if(chechResult=='1'){//用户名已经被注册!
error_msg = USERNAME_ALREADY_REG_ERROR;
}else{
error_msg = '0';
}
}
});
}
return error_msg;
}
让ajax同步!!哈哈!
浙公网安备 33010602011771号