【问题标题】:check if username exists with bvalidator (jquery validation plugin)使用 bvalidator 检查用户名是否存在(jquery 验证插件)
【发布时间】:2012-02-13 04:28:55
【问题描述】:

我正在使用 bvalidator(jquery 验证插件)来检查数据库中是否存在用户名。他们的文档中有一个示例。但是,我不知道它是如何工作的。您可以在此处阅读有关该示例的更多信息: http://karmela.fsb.hr/~bmauser/bvalidator/documentation.html#serversidevalidation

我尝试创建自己的。但是,它总是告诉我用户名已经被占用了......当谈到 AJAX 时,我是一个完整的新手。我几乎不知道。所以无论如何,这就是我到目前为止创建的......

index.php(主页面)

<script type="text/javascript">
$(document).ready(function () {
$('#register').bValidator(optionsRed);
});
function checkUsername(username) {
    $.post("checkusername.php", { username: username }, function(data) {
        if (data == 0) {
            ret = true;
        } else {
            ret = false;
        }
        return ret;
    });
}
</script>

<input type="text" name="username_register" id="textstyleid" data-bvalidator="checkUsername,required,rangelength[5:20]" data-bvalidator-msg="This username is not valid or already taken."/>

checkusername.php(检查用户名是否存在)

<?php

require '../connect.inc.php';
if (isset($_POST['username'])) {
$username = mysql_real_escape_string($_POST['username']);
if (!empty($username)) {
$username_query = mysql_query("SELECT COUNT(uid) FROM users WHERE username='$username'");
$username_result = mysql_result($username_query, 0);

if ($username_result == 0) {
return 0;
} else if ($username_result == 1) {
return 1;
}
}
}

?>

编辑 我注意到一个 404 错误。我修好了。 PHP 和 AJAX 正在工作。根据预览中输入的文本,它会给我一个 0 或 1。但是,问题仍然存在。我认为是因为这行代码。我真的不明白这是什么意思。什么是数据?:

if (data == 0) {
    ret = true;
} else {
    ret = false;
}
return ret;

【问题讨论】:

  • 能否请您使用诸如 firebug/fiddler 之类的东西来找出从服务器返回到客户端的确切内容并为我们发布?
  • 在 chrome 或 IE 中使用 firebug for firefox 或开发工具(按 F12)...您将能够看到 AJAX 请求以确定帖子中的内容以及返回的内容PHP 脚本...然后您可以确定它是 AJAX 还是 PHP 问题...
  • firebug 显示的 php 脚本的响应到底是什么。它会返回一些 JSON,还是只返回一个普通的 0 或 1?
  • 如果我回显 0 或 1,它会给我 0 或 1。如果我只是返回它,它不会给我任何东西。
  • 您来自 php 的 AJAX 响应通常在一个 json 编码数组中回显,其中 success=true

标签: php jquery ajax validation


【解决方案1】:

进一步查看后,问题出在您的 php 中,您需要在结果周围使用 mysql_num_rows 与返回的 0 recs 进行比较,结果对象本身只会在回显时给您一个资源 id

【讨论】:

  • 我尝试将结果呼出。它工作正常。我将 $username 替换为数据库中存在的用户名字符串。它返回 1。我还尝试将 $username 替换为数据库中不存在的用户名字符串。它返回 0。我认为 PHP 代码没有问题。
【解决方案2】:

试试这个

if (data == 0) {
    echo json_encode(TRUE);
} else {
    echo json_encode(FALSE);
}

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 2013-04-21
    • 2013-05-10
    相关资源
    最近更新 更多