使用jQuery和PHP检查数据库中是否已经存在电子邮件地址

使用jQuery和PHP检查数据库中是否已经存在电子邮件地址,php,jquery,mysql,Php,Jquery,Mysql,我试图验证一个电子邮件地址,如果它已经存在于表中,但这不起作用 这是我的密码: <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script src="http://code.jquery.com/jquery-latest.js"><

我试图验证一个电子邮件地址,如果它已经存在于表中,但这不起作用

这是我的密码:

<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$('#Submit').click(function() {
    var emailVal = $('#email').val(); // assuming this is a input text field
    $.post('checkemail.php', {'email' : emailVal}, function(data) {
        alert(data);
    });
});
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="view.php">
  <p>
    <input type="text" name="email" id="email" />
  </p>
  <p>
     <input type="submit" name="Submit" id="Submit" value="Submit" />
  </p>
</form>
</body></html>

无标题文件
$(“#提交”)。单击(函数(){
var emailVal=$('#email').val();//假设这是一个输入文本字段
$.post('checkemail.php',{'email':emailVal},函数(数据){
警报(数据);
});
});

单击Submit按钮时,应首先使用jQuery进行验证,并调用checkemail.php文件,如下所示:

<?php
include("../includes/db.php");

$sql = "SELECT email FROM lf_clients WHERE email = " .$_POST['email'];
$select = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($select);

if (mysqli_num_rows > 0) {
    echo "The email already exists.";
}
?>


但是,当我单击submit按钮时,它会转到view.php而不是checkemail.php。在重定向到view.php之前,它应该首先检查电子邮件是否已经存在。如果电子邮件已经存在,则不应重定向到view.php。

我怀疑您必须中止提交按钮的标准操作。您可能还必须将操作从单击更改为提交,但现在无法对其进行测试

$('#Submit').submit(function(e) {
    var usernameVal = $('#email').val(); // assuming this is a input text field
    $.post('checkemail.php', {'email' : emailVal}, function(data) {
        alert('data');
    });
    e.preventDefault(); // <------
});
$(“#提交”).Submit(函数(e){
var usernameVal=$('#email').val();//假设这是一个输入文本字段
$.post('checkemail.php',{'email':emailVal},函数(数据){
警报(“数据”);
});

e、 preventDefault();//您可以执行以下操作

  • 在PHP文件中-

     if (mysqli_num_rows > 0) {
          echo "0"; // email exists
     else
          echo "1"; // email doesn't exists
     return;
    

  • 在HTML文件中,使用
    这类东西的最佳实践是使用Jquery远程验证方法

      $("#myform").validate({
          rules: {
            email: {
              required: true,
              email: true,
              remote: "check-email.php"
            }
          },
          messages:{
             email:'Email address exists.'
         }
        });
    
    在PHP文件中,您可以执行@Sachyn提到的操作。

    
    
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){ //newly added 
    $('#Submit').click(function() {alert('in');
        var emailVal = $('#email').val(); // assuming this is a input text field
        $.post('checkemail.php', {'email' : emailVal}, function(data) {
            if(data=='exist') return false;
            else $('#form1').submit();
        });
    });});
    </script>
    </head>
    <body>
    <form id="form1" name="form1" method="post" action="view.php">
      <p>
        <input type="text" name="email" id="email" />
      </p>
      <p>
        <input type="button" name="Submit" id="Submit" value="Submit" />
      </p>
    </form>
    </body>
    </html>
    
    无标题文件 $(文档).ready(函数(){//新添加 $(“#提交”)。单击(函数(){alert('in'); var emailVal=$('#email').val();//假设这是一个输入文本字段 $.post('checkemail.php',{'email':emailVal},函数(数据){ 如果(数据=='exist')返回false; else$('#form1')。提交(); }); });});

    php代码

    <?php
    include("../includes/db.php");
    
    $sql = "SELECT email FROM lf_clients WHERE email = " .$_POST['email'];
    $select = mysqli_query($con, $sql);
    $row = mysqli_fetch_assoc($select);
    
    if (mysqli_num_rows > 0) {
        echo "exist";
    }else echo 'notexist';
    ?>
    

    如果您喜欢使用JQuery进行检查,可以按如下方式进行

    $('document').ready(函数(){
    var username\u state=false;
    var email_state=false;
    $('#username')。在('blur',function()上{
    var username=$('#username').val();
    如果(用户名=“”){
    用户名\状态=false;
    返回;
    }
    $.ajax({
    url:'register.php',
    键入:“post”,
    数据:{
    “用户名检查”:1,
    “用户名”:用户名,
    },
    成功:功能(响应){
    如果(响应=='take'){
    用户名\状态=false;
    $('#username').parent().removeClass();
    $('#username').parent().addClass(“表单错误”);
    $(“#用户名”).sibbins(“span”).text(“对不起……用户名已被占用”);
    }否则,如果(响应=='未采取'){
    username\u state=true;
    $('#username').parent().removeClass();
    $('#username').parent().addClass(“form#u success”);
    $('#username')。同级('span')。文本('username available');
    }
    }
    });
    });        
    $('#email')。在('blur',function()上{
    var email=$('#email').val();
    如果(电子邮件=“”){
    email_state=false;
    返回;
    }
    $.ajax({
    url:'register.php',
    键入:“post”,
    数据:{
    “电子邮件检查”:1,
    “电子邮件”:电子邮件,
    },
    成功:功能(响应){
    如果(响应=='take'){
    email_state=false;
    $('#email').parent().removeClass();
    $('#email').parent().addClass(“表单错误”);
    $('#email')。兄弟姐妹(“span”)。文本(“对不起……电子邮件已被接收”);
    }否则,如果(响应=='未采取'){
    email_state=true;
    $('#email').parent().removeClass();
    $('#email').parent().addClass(“form#u success”);
    $('#email')。兄弟姐妹('span')。文本('email available');
    }
    }
    });
    });
    $('reg_btn')。在('click',function()上{
    var username=$('#username').val();
    var email=$('#email').val();
    var password=$('#password').val();
    如果(用户名_状态==false | |电子邮件_状态==false){
    $('#error_msg')。text('首先修复表单中的错误');
    }否则{
    //继续提交表格
    $.ajax({
    url:'register.php',
    键入:“post”,
    数据:{
    “保存”:1,
    “电子邮件”:电子邮件,
    “用户名”:用户名,
    “密码”:密码,
    },
    成功:功能(响应){
    警报(“用户已保存”);
    $('#username').val('');
    $('#email').val('');
    $('#password').val('');
    }
    });
    }
    });
    });
    正文{
    背景:#A9D9C3;
    }
    #登记表h1{
    文本对齐:居中;
    }
    #登记表{
    宽度:37%;
    保证金:100像素自动;
    填充底部:30px;
    边框:1px实心#918274;
    边界半径:5px;
    背景:白色;
    }
    #登记表输入{
    宽度:80%;
    高度:35px;
    利润率:5×10%;
    字体大小:1.1米;
    填充:4px;
    字体大小:.9em;
    }
    #注册号{
    高度:35px;
    宽度:80%;
    利润率:5×10%;
    颜色:白色;
    背景:#3B5998;
    边界:无;
    边界半径:5px;
    }
    /*表单错误的样式设置*/
    .form_错误范围{
    宽度:80%;
    高度:35px;
    利润率:3×10%;
    字体大小:1.1米;
    颜色:#D83D5A;
    }
    .form_错误输入{
    边框:1px实心#D83D5A;
    }
    /*在表单上没有错误的情况下进行样式设置*/
    .form_成功跨度{
    宽度:80%;
    高度:35px;
    利润率:3×10%;
    字体大小:1.1米;
    颜色:绿色;
    }
    .form_成功输入{
    边框:1px纯绿色;
    }
    #错误消息{
    颜色:红色;
    文本对齐:居中;
    利润率:10px自动;
    }
    
    登记
    登记
    登记
    
    我尝试了这一点,但仍然不起作用。即使我在电子邮件字段中输入了表中已经存在的电子邮件,它仍然会重定向到view.php.my bad。这段代码有效。问题是我的php代码。顺便问一下,我如何在正文中显示消息,如:
    <?php
    include("../includes/db.php");
    
    $sql = "SELECT email FROM lf_clients WHERE email = " .$_POST['email'];
    $select = mysqli_query($con, $sql);
    $row = mysqli_fetch_assoc($select);
    
    if (mysqli_num_rows > 0) {
        echo "exist";
    }else echo 'notexist';
    ?>