我有一个带有电子邮件字段的表单,我希望在keyup()上针对MySQL数据库进行验证。我也尝试使用用户名字段,并且没有遇到任何问题。但由于某种原因,电子邮件的价值不会发布到php函数,或者在你onKeyUp()@符号时从控制器返回任何内容。一封电子邮件在电子邮件地址中间位于@where somwhere,例如piet@pompies.com,“piet”帖子很好,直到您点击班次2(@)然后一切都流失了。这是代码:
$( "#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;
}
}
答案 0 :(得分:0)
使用encodeURI
对电子邮件地址进行编码,然后再将其发布到PHP。
答案 1 :(得分: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)
}
});