我正在尝试检查刚刚输入的电子邮件用户是否在数据库中,并显示消息。它工作正常。但当我删除输入的值并将焦点移开时,会显示其他选项。但我也不想展示。这是我的代码ajax
<script>
$(document).ready(function(){
$("#email").focusout(function(){
var emailVal = $('#email').val();
$.ajax({
type: 'post',
url: 'check_email.php',
data: {
myparam:emailVal //set it with a parameter name
},
success: function( data ) {
alert(data);
if(data==1){
document.getElementById('email_check').innerHTML="<p style='color:red;'>The email you have entered is already exist!</p>";
}
if(data==0){
document.getElementById('email_check').innerHTML="<p style='color:green;'>The email you have entered is available!</p>";}
}
});
});
});
</script>
这是我的check_email.php文件,
<?php
require_once("connnection.php");
$con=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if (isset($_POST['myparam'])){
$email=mysqli_real_escape_string($con,$_POST['myparam']);
$sql = "SELECT * FROM user WHERE email='$email'";
$select=mysqli_query($con,$sql) or die("fail");
$row = mysqli_num_rows($select);
if ($row >0) {
echo 1;
}else {
echo 0;
}
else
echo "post error";
在删除输入的值并将焦点向外(单击另一个地方)后,会发生以下情况,使用我从服务器获得的警报(数据)0作为数据。这怎么会发生。如果文本字段中没有值,那么它是如何输入php文件中的sql查询段的。是否有任何默认值或在场景后面经过的东西?请解释一下?
如果文本字段中没有值,它将发送
myparam:"
然后,它将检查是否有一个带有"的电子邮件地址,并返回0。
在执行php调用之前,只需检查文本字段是否为空即可解决此问题。
只需检查emailVal
的值是否存在。试试这个
$(document).ready(function(){
$("#email").focusout(function(){
var emailVal = $('#email').val();
if($.trim(emailVal)){ //Added the new condition
$.ajax({
type: 'post',
url: 'check_email.php',
data: {
myparam:emailVal //set it with a parameter name
},
success: function( data ) {
alert(data);
if(data==1){
document.getElementById('email_check').innerHTML="<p style='color:red;'>The email you have entered is already exist!</p>";
}
if(data==0){
document.getElementById('email_check').innerHTML="<p style='color:green;'>The email you have entered is available!</p>";}
}
});
}else{ //If empty then nothing will be shown
$('#email_check').html('');
}
});
});