Php jQuery.validator.addMethod在CodeIgniter中始终返回true
我试图验证用户是否已经存在。用户名的错误输出总是“此用户名已被使用” jQuery验证:Php jQuery.validator.addMethod在CodeIgniter中始终返回true,php,codeigniter,jquery,jquery-validate,Php,Codeigniter,Jquery,Jquery Validate,我试图验证用户是否已经存在。用户名的错误输出总是“此用户名已被使用” jQuery验证: 除uniqueUsername外,所有验证错误均有效(必填、minlength、maxlength、lettersonly均正常) models/users.php 此函数获取数组并检查此用户名是否已存在于我的数据库中,如果已存在->true,否则->false public function is_user_username($user) { $this -> db -> where(
除uniqueUsername外,所有验证错误均有效(必填、minlength、maxlength、lettersonly均正常) models/users.php
此函数获取数组并检查此用户名是否已存在于我的数据库中,如果已存在->true,否则->false
public function is_user_username($user) {
$this -> db -> where('username', $user['username']);
$query = $this -> db -> get('users');
if ($query -> num_rows() == 1) {
return true;
} else {
return false;
}
}
Quote OP:“
models/users.php
-此函数获取数组并检查此用户名是否已存在于我的数据库中,如果已存在->true,否则->false。”
因此,uniqueUsername
方法的逻辑是反向的:
success : function(msg) {
if (msg == 'true') { // <-- if username exists
return true; // <-- this means 'passed- no error'
} else {
return false; // <-- since you did not get a match, it shows error
}
}
为什么不使用远程方法呢?这里有几个例子 这样,您就不必编写自己的方法,只需像这样指定规则即可。您的check_用户页面将被传递用户名字段的内容,并且应该只返回单词true或false
rules : {
username : {
required : true,
minlength : 3,
maxlength : 25,
lettersonly : true,
remote: "<?php echo base_url();?>user/check_user"
},
},
规则:{
用户名:{
要求:正确,
最小长度:3,
最大长度:25,
信一:没错,
远程:“用户/检查用户”
},
},
success : function(msg) {
if (msg == 'true') { // <-- if username exists
return true; // <-- this means 'passed- no error'
} else {
return false; // <-- since you did not get a match, it shows error
}
}
success : function(msg) {
if (msg == 'true') { // <-- if username exists
return false; // <-- this means 'failed- show message'
} else {
return true; // <-- this means 'passed- no error'
}
}
rules : {
username : {
required : true,
minlength : 3,
maxlength : 25,
lettersonly : true,
remote: "<?php echo base_url();?>user/check_user"
},
},