Javascript 检查用户名的Ajax请求

Javascript 检查用户名的Ajax请求,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我正在用HTML/CSS/JS创建一个注册表单,它使用AJAX请求从服务器获取响应。在jQuery中,我使用一个方法验证表单内容,该方法还调用一个函数(包含ajax)来查看用户名是否存在。我已经检查了类似的问题,但与我的问题无关 AJAX包含在这样一个函数中 function checkIfUserNameAlreadyExists(username) { // false means ok, i.e. no similar uname exists $.ajax ({

我正在用HTML/CSS/JS创建一个注册表单,它使用AJAX请求从服务器获取响应。在jQuery中,我使用一个方法验证表单内容,该方法还调用一个函数(包含ajax)来查看用户名是否存在。我已经检查了类似的问题,但与我的问题无关

AJAX包含在这样一个函数中

function checkIfUserNameAlreadyExists(username)
{
    // false means ok, i.e. no similar uname exists
    $.ajax
    ({
        url  : 'validateUsername.php',
        type : 'POST',
        data : {username:username},

        success : function(data,status)
        {
            return data;
        } 

    });
}
<?php 

if($_SERVER['REQUEST_METHOD']=='POST')
{
    $enteredLoop=false;
    $linkobj = new mysqli('localhost','root','','alumni');
    $query = "select username from user where username='".$uname."'";
    $stmt = $linkobj->prepare($query);
    $stmt->execute();
    $stmt->bind_result($uname);
    while($stmt->fetch())
        $enteredLoop=true;

    if($enteredLoop)
    {
        echo "
        <script type='text/javascript'>
        $('.unamestar').html('Sorry username already exists');
        $('.userName').css('background-color','rgb(246, 71, 71)');
                $('html,body').animate({
                    scrollTop: $('.userName').offset().top},
                    'slow');
        </script>";
        return;
    }
}
?>
PHP代码如下所示

function checkIfUserNameAlreadyExists(username)
{
    // false means ok, i.e. no similar uname exists
    $.ajax
    ({
        url  : 'validateUsername.php',
        type : 'POST',
        data : {username:username},

        success : function(data,status)
        {
            return data;
        } 

    });
}
<?php 

if($_SERVER['REQUEST_METHOD']=='POST')
{
    $enteredLoop=false;
    $linkobj = new mysqli('localhost','root','','alumni');
    $query = "select username from user where username='".$uname."'";
    $stmt = $linkobj->prepare($query);
    $stmt->execute();
    $stmt->bind_result($uname);
    while($stmt->fetch())
        $enteredLoop=true;

    if($enteredLoop)
    {
        echo "
        <script type='text/javascript'>
        $('.unamestar').html('Sorry username already exists');
        $('.userName').css('background-color','rgb(246, 71, 71)');
                $('html,body').animate({
                    scrollTop: $('.userName').offset().top},
                    'slow');
        </script>";
        return;
    }
}
?>

您的
checkIfUserNameAlreadyExists()
函数是同步的,您的ajax调用是异步的。这意味着您的函数将在ajax调用完成之前返回一个值(实际上,在您的情况下根本不会返回任何值…)

解决这个问题的最简单方法是,根据
数据
变量的返回值,在success函数中生成html

比如:

    success : function(data,status) {
        if (data === 'some_error') {
          // display your error message, set classes, etc.
        } else {
          // do something else?
        }
    } 

除此之外,您是否实际将
$uname
的值设置为
$\u POST['username']

您需要将响应脚本附加到文档以执行

function checkIfUserNameAlreadyExists(username)
    {
        // false means ok, i.e. no similar uname exists
        $.ajax
        ({
            url  : 'validateUsername.php',
            type : 'POST',
            data : {username:username},        
            success : function(response)
            {
                $('body').append(response);
            } 

        });
    }

如何调用
checkIfUserNameAlreadyExists()
?如何在PHP代码中获得
$uname
?如果在
循环时不呈现
的任何输出,那么我认为最好使用
If rowCount()>0