利用ajax验证用户名是否已经注册过时,总是提示用户名已被注册,有时会正常。
利用的是brophp,
前台ajax
$(function(){
function check_user_name_ajax(){
var flag=false;
$.ajax({
async:false,
type:'post',
url:'<{$app}>/register/check_user',
data:'name='+$("#username").val(),
success:function(data){
//alert(flag); //此处可以alert出flag的值为false
if(data==0){
//alert(flag); //此处没有反应
flag = true;
}
}
})
return flag;
//alert(flag); //此处也无反应
}
                //验证用户名
function check_user_name(){
flag=false;
username=$('#username');
if(username.val()==''){
username.next('span').text('用户名不能为空').css('color','red');
}else if(getlength(username.val(),'utf8')<3 || getlength(username.val(),'utf8')>15){
username.next('span').text('用户名由3 到 15个字符组成').css('color','red');
}else if(/['"\s()-]/.test(username.val())){
username.next('span').text('用户名不能含有特殊字符').css('color','red');
}else if(parseInt(username.val())){
username.next('span').text('用户名不能已数字起头').css('color','red');
}else if(!check_user_name_ajax()){
//alert(1111);
username.next('span').text('此用户已被抢注').css('color','red');
}else{
username.next('span').text('ok').css('color','green');
flag=true;
}
return flag;
}               //后台php处理代码
public function check_user(){
$userinfo=D('user')->field('id')->where(array('name'=>$_POST['name']))->find();
if($userinfo){
echo '1';
}else{
echo '0';
}
}

解决方案 »

  1.   

    在Thinkphp中where的条件如果是array,那么则是一个匹配搜索。
    你可以试下直接写字符串的形式,再试下。
      

  2.   

    出问题时,打印$userinfo看看有什么。
      

  3.   

    $(function(){
        function check_user_name_ajax(){
            var flag=false;
            $.ajax({
                async:false,
                type:'post',
                url:'<{$app}>/register/check_user',
                data:'name='+$("#username").val(),
                success:function(data){
                    //alert(flag); //此处可以alert出flag的值为false
                    if(data==0){
                        //alert(flag);    //此处没有反应 data 等于1的时候自然不会有反应
                        flag = true;
                    }
                }
            })
            return flag;
            //alert(flag);    //此处也无反应 都返回了,怎么还会执行
        }
      

  4.   

    在success:function(data){
    alert(data);       此处alert出的值为0
    }