Class Myself Extends Phper{ }

二十弱冠、三十而立;不要等到当而立感叹弱冠,当不惑感叹而立...
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

js有关Ajax的一些疑问【 解决 】

Posted on 2010-12-29 11:33  Terry_glp  阅读(196)  评论(0)    收藏  举报

 

//-------------------------用户名检测-------------------------------------
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同步!!哈哈!