使用Javascript运行php脚本来检查用户名

时间:2013-09-30 01:18:06

标签: javascript php jquery html

我一直在努力为我正在建设的网站建立一个注册表单。我可以做基础知识,但我希望它在不重新加载页面的情况下检查用户名可用性。

JAVASCRIPT

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script>
    $(document).ready(function()
    {
        $("#Username").focusout(function()
        {
            //Check if usernane if available
            var username = $("#Username").val();
            $.post("scripts/check_username.php", {username:  username}, function(data)
            {
                if(data == 'false')
                {
                    alert('Username not available');
                    $("#Username").setCustomValidity("This username is already taken!");
                }
                else
                {
                    alert('Username available');
                }
            });
            return false;
        });
    });
</script>

HTML

<form id="registerForm">
                <table>
                    <tr><td>Username</td><td><input id="Username" class='textInput' type='text' name='username' required></td></tr>

PHP SCRIPT

<?php
include 'open_connection.php';
$result = 'true';
$username = mysql_real_escape_string($_POST['username']);

$result = mysql_query("SELECT * FROM tblMembers WHERE Username='$username'");
while($row = mysql_fetch_array($result))
{
    $result = 'false';
}
echo $result;
?>

当我离开文本框时,无论如何都会显示用户名。我在数据库中放置了一个用户名“test”...没有运气

请帮忙

3 个答案:

答案 0 :(得分:1)

PHP:

$output = 'true';
$username = mysql_real_escape_string($_POST['username']);
$result = mysql_query("SELECT * FROM tblMembers WHERE Username='$username'");
while($row = mysql_fetch_array($result))
{
    $output = 'false';
}
echo $output;

Ans Script:

<script>
$(document).ready(function()
{
    $("#Username").focusout(function()
    {
        //Check if usernane if available
        $.post("scripts/check_username.php", {username:  $("#Username").val()}, function(data)
        {

            if(data  =='false')
            {
                    $("#Username").setCustomValidity("This username is already taken!");
                }
                else
                {
                    alert('Username available');
                }
            });
            return false;
        });
    });
</script>

顺便说一句,不要使用 mysql _ * 函数,它们已被弃用。使用Mysqli或PDO。接下来的事情是你忘了在你的陈述结束时加分号!

答案 1 :(得分:0)

您指定$("#Username").value是否意味着使用$("#Username").val()

$('#Username').value可能会回复你的数据库中不存在的垃圾。

答案 2 :(得分:0)

您使用的是开发者工具还是Firebug?

如果您检查$ .post到check_username.php,很容易看出问题出在哪里:

(1)是否发送了正确的帖子请求?我认为您的数据对象应为{"username":username}

(2)您的脚本是否回复true?或者是其他东西?你只知道if语句的结构不会返回false。

相关问题