用户注册时,Yii利用AJAX页面实时提示用户名已经存在

来源:互联网 发布:python 文件读写 删除 编辑:程序博客网 时间:2024/06/04 14:27

在用户注册网站时候,有的网站会实时告诉你,这个用户名已经注册过了。自己之前用的Yii的save()函数在表单提交的时候才验证,然后表单又要在填写一遍,觉得很繁琐。如果实时提醒,应该可以增加用户的体验度。
查询了使用的方式

在View视图页面使用JS

1、元素id = “Model_name”的文本框设置监听,利用onkeyup函数,就是文本框值一旦发生变化就进行操作
2、获取当前的值,然后使用ajax请求有关控制器下的函数进行处理打开
3、根据函数查询数据表的结果,如果存在则提示用户用户名已经注册了,如果不存在,则显示用户名可以注册,这里是一个绿色的钩下载
4、页面有个地方放置上述信息
完成

document.getElementById("Model_name").onkeyup = function(){           if($(this).val()){               $.ajax({                     url:"/Model/Controller",                      type : "POST",                     data : { "name" : $(this).val(),                                      "check" : "checkName",                           },                    dataType : "json",                                                async : true,                     success : function(mydata) {                       var obj = eval(mydata);                       if(obj.exist){//名字存在,告知不可以                           $("#nameExist").html(obj.exist); //显示后端传递的结果                       }else if(obj.notExist){//名字不存在,显示绿色的钩                           var success = \'<img  style ="max-width: 5%" src="teamSuccess.jpg"  border="10px"/>\';                           $("#nameExist").html(success); //显示后端传递的结果                       }                   },                     error : function() {                             alert("calc failed");                     }                 });           }//view html<input style="width:150px;" placeholder="请输入用户名称" name="TrTeam[name]" id="TrTeam_name" maxlength="12" type="text">                                                                                                                &emsp;<span id="nameNull" style="display:none;" ><font style="color:red;">请填写团队名称</font></span>                                        <span id="nameExist" style="color:red;"></span>   

这里主要用的是js的函数onkeyup然后将获取的值用ajax的方式传递,表示这样很友好~~~

Controller中处理AJAX的有关信息

$teamName = $_POST["name"];            $model = Model::model();            $info = $model->findAllByAttributes(array('name'=>$name));            if($_POST["check"] == "checkName"){//创建时的名称检查,检查是否重名                if(!empty($info)){                    $responce = array('exist'=>'用户名已存在,请重新输入');                                    }                else{                    $responce = array('notExist'=>'用户名称可注册');                }       

效果展示
这里写图片描述

这里写图片描述

0 0