通过ajax检查用户名可用性

时间:2016-05-11 14:37:38

标签: javascript php html ajax

我想通过ajax检查用户名是否可用。我目前正在使用以下代码:

HTML

<div id="registration-form">
  <label for="username">Enter Username :
  <input name="username" type="text" id="username" maxlength="15"> <span id="user-result"></span>
  </label>
</div>

的JavaScript

<script type="text/javascript">
$(document).ready(function() {
    var x_timer;    
    $("#username").keyup(function (e){
        clearTimeout(x_timer);
        var user_name = $(this).val();
        x_timer = setTimeout(function(){
            check_username_ajax(user_name);
        }, 1000);
    }); 

function check_username_ajax(username){
    $("#user-result").html('<img src="ajax-loader.gif" />');
    $.post('username-checker.php', {'username':username}, function(data) {
      $("#user-result").html(data);
    });
}
});
</script>

这里是php

<?php
if(isset($_POST["username"]))
{
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
        die();
    }
    $mysqli = new mysqli('localhost' , 'root', 'juaid123', 'project2');
    if ($mysqli->connect_error){
        die('Could not connect to database!');
    }

    $username = filter_var($_POST["username"], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH);

    $statement = $mysqli->prepare("SELECT username FROM user_list WHERE username=?");
    $statement->bind_param('s', $username);
    $statement->execute();
    $statement->bind_result($username);
    if($statement->fetch()){
        die('Username Not Available!');
    }else{
        die('Username Available!');
    }
}
?>

一切都很完美,我的代码实时显示消息,但问题是如果用户名字符小于6并且只想在输入字段中允许字母和数字,我不想显示任何消息,是否可以请帮助我如何做到这一点.. 感谢

1 个答案:

答案 0 :(得分:1)

您只需在输入中使用HTML模式属性即可限制数字和字母http://www.w3schools.com/tags/att_input_pattern.asptranslate(-50%, -50%) translate(-100px, -300px);

然后你可以在你的帖子函数中进行验证:

[a-zA-Z0-9]
相关问题