データベースに自分のユーザー名または電子メール アドレスが一致する場合に検証エラーが報告されない理由を突き止めようとしています。
これは、正しい投稿パラメーターとして引き続き表示されます。フォーカスを外すと、2 つの異なる投稿リクエストが実行されます。
コントローラーの登録:
public function is_username_available()
{
if ($this->users_model->is_username_available($this->input->post('username')))
{
return false;
}
else
{
return true;
}
}
public function is_email_available()
{
if ($this->users_model->is_email_available($this->input->post('email_address')))
{
return false;
}
else
{
return true;
}
}
register.js
rules: {
username: {
minlength: 6,
maxlength: 12,
remote: {
type: 'post',
url: 'register/is_username_available',
data: {
'username': function() { return $('#username').val(); }
},
dataType: 'json'
}
},
email_address: {
email: true,
remote: {
type: 'post',
url: 'register/is_email_available',
data: {
'email_address': function() { return $("#email_address").val(); }
},
dataType: 'json'
}
}
ユーザー_モデル:
/**
* Check if username available for registering
*
* @param string
* @return bool
*/
function is_username_available($username)
{
$this->db->select('username', FALSE);
$this->db->where('LOWER(username)=', strtolower($username));
$query = $this->db->get($this->users_table);
echo $this->db->last_query();
return $query->num_rows() == 0;
}
/**
* Check if email available for registering
*
* @param string
* @return bool
*/
function is_email_available($email)
{
$this->db->select('email', FALSE);
$this->db->where('LOWER(email)=', strtolower($email));
$query = $this->db->get($this->users_table);
return $query->num_rows() == 0;
}