2013-09-25 3 views
1

У меня есть форма с полем электронной почты, которое я хочу проверить в базе данных MySQL на keyup(). Я также пробовал это с полем имени пользователя и не имел никаких проблем с этим. Но по какой-то причине значение электронной почты не отправляется в php-функцию или ничего не возвращает от контроллера в тот момент, когда вы наKeyUp() символ @. в электронном письме есть @, расположенное где-то посреди адреса электронной почты, например, [email protected], сообщения «piet» до тех пор, пока вы не нажмете сдвиг 2 (@), тогда все сходит с ума. вот код:У сообщения JQuery есть проблемы с символом @

$("#emailField").keyup(function(){ 

    var email = $("#emailField").val(); 

    $.post("<?php echo URL_CHECK_EMAIL_EXISTS; ?>" + email, function(data) { 

     alert(email); 

    }); 

}); 

Вот функция управления, даже если я сказал, что все хорошо с нормальными строками произведения, такие как имя пользователя.

public function check_email($email){ 

    $exists = $this->User_Model->if_email_exists($email); 

    if($exists){ 

     echo "true"; 

    } else { 

     echo "false"; 

    } 

} 

Вот модель, которая работает отлично:

public function if_email_exists($email){ 

    $this->db 
    ->from('users') 
    ->where('email', $email) 
    ->limit(1); 

    $query = $this->db->get(); 

    if ($query->num_rows() > 0){ 

     return true; 

    } else { 

     return false; 

    } 

} 
+2

Я хотел бы предложить, чтобы не сделать DB звонков на событиях OnKeyUp, если его абсолютно .. Слишком необходимый много DB не вызывает разве что хорошо;) –

+0

^^^Это! Кроме того, проверьте документацию о том, как отправлять данные с помощью почтового вызова ajax. Вы не указываете его в URL. http://api.jquery.com/jQuery.post/ – Archer

+0

MVC является причиной того, что значение находится в URL-адресе –

ответ

0

Использование encodeURI для кодирования электронной почты перед отправкой его на PHP.

0

неразмеченный код, который вы можете попробовать бы как этот

$("#emailField").blur(function(){ // u can also use focusout event 

var email = $("#emailField").val().trim(); 
// Check for email validity using regex 
if(email_valid){ 
    $.ajax({ 
     type: "POST", 
     url: 'url here', 
     data: { email : email } 
     }).done(function(resp){ 
       alert(resp) 
     }); 
}else{ 
    alert('Invalid Email) 
    } 
}); 
Смежные вопросы