jquery validate - remote始终返回true

时间:2014-02-10 15:41:26

标签: javascript jquery validation email mysqli

我有一个表单,我正在使用jQuery validate插件。

我也使用遥控器检查用户名和电子邮件是否可用,但我总是从脚本中回复。

这里是jquery验证部分:

$(document).ready(function () {
    $('#registration').validate({
        rules: {
            email: {
                email: true,
                remote:{
                    url: "./php/checkemail.php",
                    type: "POST",
                }
            },
            username: {
                minlength: 4,
                maxlength: 16,
                remote: {
                    url: "./php/checkusername.php",
                    type: "POST",
                }
            },
            messages: {
                email: {
                    email: "Please enter a valid e-mail address.",
                    remote: "This email is already registered.",
                },
                username: {
                    minlength: "Your username must be at least 4 characters long but less than 16",
                    maxlength: "Your username must be at least 4 characters long but less than 16",
                    remote: "This username is already registered.",
                },
                submitHandler: function(form) { 
                    $('#registration').ajaxSubmit();
                    return false;
                },
            });
        });

这是checkemail.php文件:

$mysqli = mysqli_init();
if(isset($_POST['email'])) {
    $email = mysqli_real_escape_string(strtolower($_POST['email']));
    $check= mysqli_query("SELECT * FROM users WHERE LOWER email = '$email'");
    if(mysqli_stmt_num_rows($check)!=0) {
        echo json_encode(false);
    } else {
        echo json_encode(true);
    }
}

任何人都可以告诉我,我做错了什么以及如何解决它?

此外,即使我将脚本更改为发送给我,验证脚本中的远程消息也不会显示在我的表单上。

2 个答案:

答案 0 :(得分:0)

我认为远程功能正在检查字符串。

所以试试这个:

if(mysqli_stmt_num_rows($check)!=0) {
    echo 'false';
} else {
    echo 'true';
}

答案 1 :(得分:0)

所以,问题是我使用的php已被弃用,当我将其更改为新版本时我做错了...所以正确的做法是:

  

如果(isset($ _ POST [ '电子邮件']))

     

{

     

$ email = mysqli_real_escape_string($ link,$ _POST ['email']);

     

$ check = mysqli_query($ link,“SELECT * FROM users WHERE email ='”。$ email。“'”)或die(mysqli_error($ link));

     

如果(mysqli_num_rows($检查)!= 0)

     

{

  echo 'false';
     

}否则{

  echo 'true';
     

}

     

}

     

mysqli_close($链路);

     

>

其中$ link是与mysql数据库的连接:

  

$ link = mysqli_connect(“$ db_host”,“$ db_username”,“$ db_password”,“$ db_database”)或死(“错误”.mysqli_error($ link));

现在它工作得很好。