|
在用户注册时,为保证用户注册名称的唯一性,在用户设定用户名时,适时返回数据库返回值。然后根据判断该用户名是否可以注册。
问题现象:搞不到数据库的返回值,不知道什么原因,卡了两天了,在论坛里找了很久,但没有和我这个类似的。代码都是以前用过的代码,常规的面向过程方式,是没有问题的。
模型部分代码:
function checkregname($checkregname)
{
$this->db->where('logname',$checkregname);
$query = $this->db->get('userinfo');
if($query->num_rows() > 0)
{
return '0';//存在重名
}
else
{
return '1';//可以注册
}
}
控制器部分代码:
function checkregname()
{
$checkregname = $this->input->get('reglogname');
//print $checkregname;
print $this->user_model->checkregname($checkregname);
}
视图部分代码:
<form name="userreg" id="userreg" method="post" action="<?php echo site_url();?>/default/user/reg">
<tr height="30" bgcolor="#FFFFFF">
<td width="15%" align="center">登录名</td>
<td width="20%"><input name="reglogname" id="reglogname" size="19" /></td>
<td width="62%"><span id="reglognameTip"></span></td>
</tr>
<tr height="30" bgcolor="#FFFFFF">
<td colspan="3" align="center"><input type="submit" name="button" id="button" value=" 确认注册 " /></td>
</tr>
<!--注册验证-->
<script type="text/javascript">
$(document).ready(function(){
$.formValidator.initConfig({formid:"userreg",onerror:function(msg){alert(msg)},onsuccess:function(){alert('校验没有通过,具体错误请看错误提示');return false;}});
$("#reglogname").formValidator({onshow:"请输入登录名",onfocus:"用户名至少6个字符,最多10个字符",oncorrect:"该用户名可以注册"}).inputValidator({min:6,max:10,onerror:"设定的登录名长度非法,请确认"}).regexValidator({regexp:"username",datatype:"enum",onerror:"用户名格式不正确"})
.ajaxValidator({
type : "get",
url : "<?php echo site_url();?>/default/user/checkregname",
datatype : "json",
cache : false,
success : function(data){
if( data == "1" )
{
return true;
}
else
{
return false;
}
},
buttons: $("#button"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名",
onwait : "正在对用户名进行合法性校验,请稍候..."
});
});
</script>
随附使用的formvalidator插件 |
|