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


Using Javascript to run a php script to check username

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

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;
?>

当我离开文本框时,它说无论如何用户名都可用。我在数据库中放置了一个用户名"测试"...没有运气

请帮忙

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

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

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

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

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

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

(2)你的脚本是响应true?还是别的什么?你只知道它不会通过你的 if 语句的结构方式返回 false。