2013-09-25 42 views
1

我有一個電子郵件字段的表單,我想在keyup()上針對MySQL數據庫進行驗證。我也嘗試過用戶名字段,並沒有這樣做的問題。但出於某種原因,電子郵件的值不會發布到php函數中,或者在onKeyUp()@符號的時刻從控制器返回任何內容。一封電子郵件的位於電子郵件地址中間的某處(例如[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事件調用,除非它的絕對neccessary ..太多DB調用的心不是那麼好;) –

+0

^^ ^這!另外,請查閱關於如何使用ajax post調用發送數據的文檔。你不要把它放在網址中。 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) 
    } 
});