javascript - 电子邮件实时检查 PHP 和 Mysql

标签 javascript php mysql html

我遇到一个问题,卡住了 3 天。我试图在数据库中检查用户输入的电子邮件是否已注册,并避免重复注册。但这似乎不太有效

这是我的代码:

这是在 HTML 中

<script type="text/javascript">
   $(document).ready(function() {
    $("#cf_email").keyup(function(e) {
       var uname = $(this).val();
       if (uname == "")
       {
           $("#msg").html("");
           $("#Submit").attr("disabled", true);
       }
       else
       {
           $("#msg").html("Verificando, espere...");
           $.ajax({
               url: "check_availability.php",
               data: {Email: uname},
               type: "POST",
               success: function(data) {
                if(data.status == true) {
                    $("#msg").html('<span class="text-danger">Email ya registrado!</span>');
                    $("#Submit").attr("disabled", true);
                } else {
                    $("#msg").html('<span class="text-success">Email Disponible para Registrar!</span>');
                    $("#Submit").attr("disabled", false);
                }
            }
        });
    }
   });
  });
</script>

<right><form id="register" action="contact.php" method="post">
      <p><label>E-mail para Registro</label></p>
    <input type="text" name="cf_email" id="cf_email" title="Email"  class="demoInputBox" placeholder="Email Valido" required><div id="msg" class="form-group"></div>
</form></right>

这是 check_availability.php

$con = mysqli_connect($host, $user, $pass, $db) or die("Error " . mysqli_connect_error());

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (isset($_POST["cf_email"]) && $_POST['cf_email'] != '')
{

   $response = array();
   $cfmail = mysqli_real_escape_string($con,$_POST['cf_email']);
   $sql  = "select Email from Bares where Email='".$cfmail."'";
   $res    = mysqli_query($con, $sql);
   $count  = mysqli_num_rows($res);
   if($count > 0)
   {
     $response['status'] = false;
     $response['msg'] = 'email already exists.';
   }
   else
   {
     $response['status'] = true;
     $response['msg'] = 'email is available.';
   }
   echo json_encode($response);

  }
?>

我在文本字段中输入哪个电子邮件并不重要,因为即使该电子邮件已在数据库中注册,它也会始终显示可用

最佳答案

在 JS 中,您处理的是字符串,而不是对象。您需要解析它:

success: function(data) {
    dataObj = JSON.parse(data);
    if(dataObj.status == true) {
         ....

关于javascript - 电子邮件实时检查 PHP 和 Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46958913/

相关文章:

javascript - 如何使用 JS 将元素与窗口底部对齐

javascript - 我如何使用 jquery 显示基于先前选择的下一个选择选项?

mysql自引用表返回 parent 的ID和 child 的数量

javascript - 在 JavaScript 中从输入切换到按钮

javascript - 如何在addEventListener中捕获两个相同的id但不同的类

php - jQuery 悬停效果 iPhone/iPod touch/iPad 不起作用

mysql - 写操作从何而来?

mysql - SHA1 和作为主键?

php - UTF-8贯穿始终

php - 如何在 PHP 中对磁盘 IO 进行基准测试?与MySQL?