php - 如何使用 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 库。
解决方案
您的#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 (){}
});
}
推荐阅读
- c - 如何取消引用指针?
- python-3.x - 在熊猫数据框中分组连续相同的值和出现次数的累积计数
- c# - 使用委托在 C# 中生成新功能
- spring - Spring JPA休眠如何从@OneToMany父列中持久化子项(删除、添加或更新)?
- javascript - 如何使用 JQuery 附加动态内容而不重复?
- image - 如何使快速静态查看幻数而不是文件扩展名来确定 MIME 类型?
- c# - Fullcalendar 不显示正确的事件时间
- javascript - 从 url 获取文本然后将其字符串化
- typescript - 有没有办法在打字稿中“在创建对象时扩展接口”?
- php - 在 PHP 中为 listview 更改周动态