2012-02-13 124 views
0

我使用bvalidator(jquery验证插件)来检查用户名是否存在于数据库中。他们在文档上有一个例子。但是,我不知道它是如何工作的。你可以在这里看到更多的例子: http://karmela.fsb.hr/~bmauser/bvalidator/documentation.html#serversidevalidation检查用户名是否存在与bvalidator(jQuery验证插件)

我试着创建自己的。然而,它总是告诉我,用户名已被采取,无论如何...我是一个完整的新手,当涉及到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; 
+0

能否请您使用类似萤火虫/小提琴手,找出到底是什么正在从服务器返回给客户端,并张贴此为我们? – 2012-02-13 04:33:02

+0

可以在Chrome或IE中使用firebug for firefox或开发工具(按F12)...您将能够看到AJAX请求,以确定在帖子中发生了什么以及PHP脚本返回的内容...然后你可以找出它的一个AJAX或PHP的问题... – 2012-02-13 04:39:48

+0

请参阅编辑。 – 2012-02-13 05:30:45

回答

0

看着它经过进一步的问题是你的PHP,你需要使用mysql_num_rows在你的结果比较0区域经济共同体返回,结果对象本身只会给UA的资源ID如果echo'ed出

+0

我尝试回显结果。它工作正常。我用数据库中存在的用户名字符串替换了$ username。它返回1.我也尝试用数据库中不存在的用户名字符串替换$ username。它返回0.我不认为PHP代码有问题。 – 2012-02-13 04:54:44

0

试试这个

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