1

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

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 脚本

<?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”......没有运气

请帮忙

4

3 回答 3

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;

答案脚本:

<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。接下来的事情是你忘了在你的陈述结束时加上分号!

于 2013-09-30T01:23:02.813 回答
0

你指定$("#Username").value你的意思是使用$("#Username").val()

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

于 2013-09-30T01:25:31.243 回答
0

你使用开发者工具还是 Firebug?

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

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

(2) 你的脚本有响应true吗?或者是其他东西?您只知道通过 if 语句的结构方式它不会返回 false。

于 2013-09-30T02:20:31.090 回答