【问题标题】:jquery validation of email field with php, mysql and validate plugin使用 php、mysql 和 validate 插件对电子邮件字段进行 jquery 验证
【发布时间】:2013-04-01 20:50:34
【问题描述】:

我在使用带有 jquery 的验证插件时遇到了一些奇怪的问题。这似乎已被问过几次,但我找不到我的问题的答案。我有一个表格,我正在尝试查看是否已经输入了电子邮件 - 如果有,用户应该无法提交表格。我正在使用 FirePHP 输出各种变量。这是我注意到查询的返回值始终为“1”(这是错误的)的地方。但是,当我手动查询我的数据库(使用 PhpMyAdmin)时,会出现正确的答案(“0”)。

这是我的 js:

    // validate signup form on keyup and submit
$("#register").validate({
    rules: {
        ......
        email: {
            required: true,
            email: true,
            remote: "check_email.php" , async:false 
        }, 
    },
    messages: {
                     ......
        email: {required: "Please enter an email address", email: "Please enter a valid email address", remote: "This email is already registered" },
        }
    }
});

});

这是我在数据库连接之后的 php...

$form_email = $_GET['email'];
fb($form_email);


$sql = "SELECT COUNT(*) AS num_rows FROM users WHERE email = " . "'" . $form_email . "'"; 
fb($sql);
$result = $conn->query($sql);
fb($result->num_rows);

if ($result->num_rows == 0) {
    echo 'true';
    fb("true");
} else {
       echo 'false';
    fb("false");
 }

计数始终返回为“1”,即使我输入了不存在的电子邮件。

我也试过退货

echo json_encode('true');

当我在某个地方读到可能有用的,但它没有帮助。为什么我的 php 中的响应总是错误的?

【问题讨论】:

  • async 不是规则。检查你的语法。

标签: php jquery mysqli jquery-validate


【解决方案1】:

remote 规则的语法不正确:

rules: {
    ......
    email: {
        required: true,
        email: true,
        remote: "check_email.php" , async:false 
    }, 
}

按照您编写的方式,插件将async 视为另一条规则。由于没有async这样的“规则”,插件会窒息。

Following the documentation,试试这个:

rules: {
    ......
    email: {
        required: true,
        email: true,
        remote: "check_email.php"
    }
}

或者这个……

rules: {
    ......
    email: {
        required: true,
        email: true,
        remote: {
            url: "check_email.php", 
            async: false 
        }
    } 
}

演示:http://jsfiddle.net/KkBSY/

【讨论】:

  • 将我的 js 更改为“remote:”check_email.php" 但仍然没有运气。
  • @KathyLyons,如您所见,插件在这里工作:jsfiddle.net/KkBSY 但是您的 OP 中缺少太多内容,我无法进一步帮助您。表单呈现的 HTML 在哪里?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 2018-06-01
相关资源
最近更新 更多