Ajax请求检查用户名

时间:2014-08-11 13:54:26

标签: 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
    ({
        url  : 'validateUsername.php',
        type : 'POST',
        data : {username:username},

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

    });
}

PHP代码看起来像这样

<?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函数返回false(不知道如何)或者未提交此ajax请求,并将表单详细信息提交给php。

任何帮助?

2 个答案:

答案 0 :(得分:3)

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

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

类似的东西:

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

除此之外,您实际上是否将$uname的值设为$_POST['username']

答案 1 :(得分:0)

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

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);
            } 

        });
    }