我試圖驗證用戶是否已經存在與否。用戶名的錯誤輸出始終爲「此用戶名已被佔用。」。jQuery.validator.addMethod總是在CodeIgniter中返回true
jQuery驗證:
所有驗證錯誤的工作除了uniqueUsername(需要使用MINLENGTH,最大長度,lettersonly工作正常)。
jQuery.validator.addMethod("lettersonly", function(value, element) {
return this.optional(element) || /^[a-z]+$/i.test(value);
}, "Please enter only letters");
$.validator.addMethod("uniqueUsername", function(value, element) {
$.ajax({
type : "POST",
url : "<?php echo base_url();?>user/check_user",
data : "username=" + value,
dataType : "html",
success : function(msg) {
if (msg == 'true') {
return true;
} else {
return false;
}
}
})
}, "This username is already taken.");
$("#form").validate({
rules : {
username : {
required : true,
minlength : 3,
maxlength : 25,
lettersonly : true,
uniqueUsername : true
},
},
messages : {
username : {
required : "Username is required.",
},
},
errorElement : "span",
errorPlacement : function(error, element) {
error.appendTo(element.parent());
}
});
控制器/ user.php的:
函數check_user()發送的用戶名中的陣列,以我的模型的用戶。我已經測試過這個功能,它的工作原理應該是這樣的。
public function check_user() {
$this -> load -> model('users');
$user = array('username' => $this -> input -> post('username'));
if ($this -> users -> is_user_username($user)) {
echo "true";
} else {
echo "false";
}
}
型號/ users.php
這個函數接受陣列並檢查該用戶名在我的數據庫已經存在,如果是這樣 - > true,否則 - >假。
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;
}
}