JQuery Bassistance表单使用远程进行电子邮件检查

时间:2013-05-21 23:46:58

标签: php jquery validation email-validation

我正在使用JQuery Bassistance Form Validation插件,一切正常,直到我尝试检查MySQL数据库中的现有电子邮件。

这是我的代码:

    $(document).ready(function(){
    $('#signup').validate({
    rules: {
            email: {
            required: true,
        email: true,
        remote: {
            type: 'POST',
            url: "email_check.php"
        }//end remote
        }//end email
    },//end rules
    messages: {
        email: {
            remote: "Email already in use."
        }//end email
    } //end messages
    }); //end validate

    }); //end ready

这是我的email_check.php文件:

    <? php

    $dbc = mysqli_connect('localhost', 'root', '', 'step1_db')
    or die('Error connecting to the database');

    $email = $_GET['email'];

    $check_email = "SELECT * FROM users WHERE email = '$email'";
    $existing = mysqli_query($dbc, $check_email);
    $num_rows = $existing->num_rows;    

    if ($num_rows == 1){
    echo json_encode(FALSE);

    }else{

    echo json_encode(TRUE);
    }

    mysqli_close($dbc);

    ?>

现在,如果我尝试将数据库中存在的电子邮件输入到我的表单中,我会收到无效电子邮件的默认错误消息,而不是“已使用的电子邮件”。即使我输入了数据库中不存在的有效电子邮件,错误消息也不会消失。

我猜这个问题出现在我的php文件中......我尝试过使用'return true'和'return false'但是它们也没有用。我改变了我的代码以回答json_encode(FALSE)从与此类似的主题的答案。 是否有人能够指出这里发生的事情?

2 个答案:

答案 0 :(得分:1)

来自documentation

  

通过$ .ajax(XMLHttpRequest)调用服务器端资源并获取   键/值对,对应于经过验证的元素的名称   及其作为GET参数的值。响应被评估为JSON   并且对于有效元素必须为true,并且可以是任何false,undefined   对于无效元素,使用默认消息为null;或一个字符串,   例如。 “该名称已被采用,请尝试使用peter123”以显示为   错误信息。

看起来好像你正确回应了。看起来您的文件路径是错误的,因为您在控制台中收到404错误。 FIx路径和其他看起来很好。

答案 1 :(得分:1)

您的php文件的电子邮件变量设置为GET,而远程验证功能设置为POST,更改其中一个以匹配,您应该设置