如何使用jquery验证插件ajax将表单提交到已存在的电子邮件数据库

时间:2017-01-01 14:37:39

标签: jquery ajax jquery-validate ajaxform

大家好我正在使用jquery验证插件。它工作得很好但我的问题是如果有电子邮件存在数据库。在他选择的另一封有效电子邮件之前,不应提交表单。如何解决这个问题呢。

即使电子邮件已经退出数据库,表单也会提交。

这是带有ajax的表单

<form id="ajax_form" action="form_action.php">
<label for="name">Name :</label>
  <input name="name" type="text"  required />

  <label for="name">Email :</label>
  <input name="email"  type="email" required />
  <input type="submit" value="Submit" />
</form>
  <p id="validemail"></p>


$(function(){
    $("#ajax_form" ).validate({
        rules: {
            email: {
                required: true,
                email: true,
                remote: {
                    url: "check_email.php",
                    type: "post",
                    data: {
                        username: function() {
                            $("#validemail").html('This email already taken');
                        }
                    }
                }
            }
        }
    });
});

这是我检查电子邮件退出的check_email.php。

mysql_connect('localhost', 'root', '');
mysql_select_db('krk');
$query = mysql_query("SELECT ID FROM customers WHERE email = '{$email}' LIMIT 1");
if (mysql_num_rows($query)) {
    return true;
}
else{
    return false;
}

在他选择的另一封有效电子邮件之前,不应提交表单。如何解决这个问题呢。

即使电子邮件已经退出数据库,表单也会提交。  在他选择的另一封有效电子邮件之前,不应提交表单。如何解决这个问题呢。         即使电子邮件已经退出数据库,表单仍在提交。  在他选择的另一封有效电子邮件之前,不应提交表单。如何解决这个问题呢。         即使电子邮件已经在数据库中退出,表单仍在提交。

2 个答案:

答案 0 :(得分:1)

PHP脚本返回错误的值。当查询返回行时,它需要返回false,因为这意味着电子邮件已被使用。此外,它应该回显一个字符串,而不是返回一个值。

mysql_connect('localhost', 'root', '');
mysql_select_db('krk');
$query = mysql_query("SELECT ID FROM customers WHERE email = '{$email}' LIMIT 1");
if (mysql_num_rows($query)) {
    echo 'false';
}
else{
    echo 'true';
}

答案 1 :(得分:0)

<script>
var emailValid = true;
$(function(){
   $("#ajax_form" ).validate({
      rules: {
        email: {
          required: true,
          email: true,
          remote: {
            url: "check_email.php",
            type: "post",
            data: {
              username: function() {
                $("#validemail").html('This email already taken');
                emailValid = false;
              }
            }
          }
        }
      }
    });
});
</script>

然后只允许表单提交,如果emailValid == true;