JQuery用户名validation

我是JQuery的新手,并试图编写一个脚本来检查用户名的可用性。 我的问题是无论我输入什么,我总会回来“这个用户名已经被使用了”。

JQuery源码:

$(document).ready(function() { jQuery.validator.addMethod("usernameCheck", function(username) { var isSuccess = false; $.ajax({ url: "username_availability.php", data: "username=" + username, async: false, success: function(msg) { isSuccess = msg === "TRUE" ? true : false } }); return isSuccess; },""); $("#register_form").validate({ onkeyup:false, rules: { username: { required: true, minlength: 3, usernameCheck: true // remote check for duplicate username } }, messages: { username: { required: "username is required.", minlength: jQuery.format("username must be at least {0} characters in length."), usernameCheck: "This username is already in use." } } }); 

PHP来源:

 include('database_connection.php'); if (isset($_POST['username'])) { $username = mysql_real_escape_string($_POST['username']); $check_for_username = mysql_query("SELECT user_id FROM users WHERE username='$username'"); if (mysql_num_rows($check_for_username)) { echo "TRUE"; } else { echo "FALSE"; //No Record Found - Username is available } } ?> 

HTML来源:

   

非常感谢

将ajax调用选项type'POST' 。 另外,AJAX不会阻止return isSuccess

您可以查看jQuery Validate提供的远程validation。

http://docs.jquery.com/Plugins/Validation/Methods/remote#options

改变你的规则。

 rules: { username: { required: true, minlength: 3, remote: 'username_availability.php' // remote check for duplicate username } }, 

看看这些例子。

我想知道这条线是否是问题所在:

 data: "username=" + username, 

尝试将其更改为正确的数组,因为我不相信jQuery会自动解析这种格式,尤其是对于POST数据。 此外,在$ .ajax调用中设置类型:’post’的选项,因为jQuery会自动将$ .ajax请求解析为GET,并且您在PHP脚本中使用POST。

尝试更改PHP源以返回“1”或“0”:

 include('database_connection.php'); if (isset($_POST['username'])) { $username = mysql_real_escape_string($_POST['username']); $check_for_username = mysql_query("SELECT user_id FROM users WHERE username='$username'"); if (mysql_num_rows($check_for_username)) { echo "TRUE"; } else { echo "FALSE"; //No Record Found - Username is available } } ?> 

然后更改您的JS以解析为整数:

 success: function(msg) { isSuccess = parseInt(msg); } 

您可以使用以下内容,只需将其更改为您的用户名(我使用电子邮件地址作为用户名。我使用空表格单元格id =“emailError”来保存邮件。

jQuery:

  $('#email').keyup(function(){ $.ajax({ type: 'POST', url: 'ajax.checkEmail.php', data: {e:$('#email').val()}, success: function(data){ if(data == 'true'){ $('#emailError').html('This email is already used'); }else{ $('#emailError').html(''); } } }) }); 

PHP(ajax.checkEmail.php):


  包括( 'inc.php');

   $ query ='SELECT COUNT(*)FROM tblcustomers WHERE email =“'。$ _ POST ['e']。'”';
   $ result = $ dbO-> getSingleResult($ query);

   if($ result> 0)
    打印'真';
  其他
    打印'假';

这个工作只是检查了相同的代码

  jQuery.validator.addMethod("usernameCheck", function(username) { var isSuccess = false; $.ajax({ url: "checkusr.php", data: "username=" + username, async: false, success: function(msg) { if(msg ==0) { isSuccess=false; } else { isSuccess=true; } } }); return isSuccess; },"Username not available"); 

PHP SIDE代码

  if ($obj->checkUsername($_GET['username'],"artist")> 0 ) { echo 0; } else { echo 1; } }