首页 > 解决方案 > 如何使用 AJAX 检查数据库中是否已存在电子邮件并显示错误消息

问题描述

所以,我想做的是当用户登录时,我想检查数据库,看看他们使用的电子邮件是否已经在数据库上注册过,如果已经注册,我想显示错误消息“电子邮件地址已被占用。”,这显然只能使用 AJAX 完成。所以基本上,这个特定过程涉及三个文件:“login.php 文件”,它是 HTML 代码的 span 标签所在的位置,这是我想要实际回显错误消息的位置,以及 login.php 文件,有注册表单,这是我真正想在用户在电子邮件输入字段中输入时检查电子邮件是否存在的地方。第二个文件是 script.js,我有 AJAX 代码,它只包含在 login.php 文件中。最后是connection.php文件,我的数据库连接,

这是代码,以获得更好的前景:

PHP(连接.php):

$sql = "SELECT * FROM users WHERE email='$email'";
$result = mysqli_query($connection, $sql);

if(mysqli_num_rows($result) > 0){
  echo "Email address already taken.";
} else {
  $sql = "INSERT INTO users (firstname, lastname, email, password) VALUES ('$fname', '$lname', '$email', '$hashed_password')";
}

HTML (login.php):

<span style="margin-top:56px; position: fixed; margin-left: -498px; font-size: 14px; color: red; visibility: hidden" id="emailExists" name="emailExists" class="emailExists">Email address already taken.</span>

AJAX (script.js):

function checkEmail() {
  jQuery.ajax({
    url: "connection.php",
    data:'email='+$("#email").val(),
    type: "POST",
    success:function(data){
$("#emailExists").html(data);
},
error:function (){}
});
}

但是,这是行不通的。我应该怎么办?现在,php 代码可以正常工作了。我也对其进行了测试,在 connection.php 文件上,它实际上是在回显“电子邮件地址已存在。”,如果它存在于数据库中。但我希望它在登录页面、span 标签中、当用户自己输入时回显,所以我猜这是 AJAX 或其他什么的问题,我不太确定。

请帮我。太感谢了。

我还在 login.php 文件中包含了 jQuery 库。

标签: phpajax

解决方案


您的#emailExists跨度被隐藏,因此成功结果不显示。在 ajax 成功事件中,首先你必须显示#emailExists跨度:

$("#emailExists").attr.('visibility', 'visible');

所以你最终的 ajax 将是:

function checkEmail() {
  jQuery.ajax({
    url: "connection.php",
    data:'email='+$("#email").val(),
    type: "POST",
    success:function(data){
      $("#emailExists").attr.('visibility', 'visible');
      $("emailExists").html(data);
    },
    error:function (){}
  });
}

推荐阅读