实时用户名检查无效

时间:2015-11-02 22:09:45

标签: javascript php json ajax live

我正在尝试用jquery和php制作注册页面,用户输入他的用户名,当他在文本框中插入他的用户名时,我的网站会立即检查它是否可用并显示!但我的代码不起作用。 这是我的js代码:

$(".r74re").keyup(function (e){
        var user_name = $(this).val();
        if(user_name.length >= 4)
        $.post('liveusername.php', {'username':user_name}, function(data) {
                $('.step1 input.usrname:focus').css({               
                    'background': '#fff url("images/loader.gif") 275px no-repeat',
                    'background-size':'10px 20px'
                }); 
                setTimeout(function (){
                  if(data.success){
                     console.log("in positive " + data);
                     $('.step1 input.usrname:focus').css({              
                        'background-color': 'lightgreen',
                        'background-size':''
                    });     
                  }else{
                    console.log("in negative  " + data);
                    $('.step1 input.usrname:focus').css({               
                        'background-color': 'red',
                        'background-size':''
                    });                     
                  }           
                }, 1000);


            });

以下是我在{key}事件发生时$.Post调用的php代码:

include ("dbcon.php");
include ("funchuge.php");

if(isset($_POST["username"]))
{
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
        die();
    }
    //sleep(1);// for animating
    if(strlen($_POST["username"]) > 3){
        selfValidator($_POST["username"]);
        $username = filter_var($_POST["username"], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH); 
        $statement = $conn->prepare("SELECT username FROM users WHERE username=:usname");
        $statement->bindparam(':usname', $username);
        $statement->execute();
        if($statement->fetch()){
            $message = "ItExists";
            echo json_encode(['success' => true, 'messages' => $message]);

        }else{

            $message = "NotExists";
            echo json_encode(['success' => false, 'messages' => $message]);

        }
    }
}

我测试了很多,我在行if(data.success)中的js代码中发现了问题这条件不起作用..如果用户也存在,它总是显示我的其他情况..我不知道为什么会发生这种情况?有人可以帮我找出问题所在。

1 个答案:

答案 0 :(得分:0)

您需要将返回的PHP字符串解析为JSON,然后才能像对象一样访问它。在setTimeout上方添加此行。

data = JSON.parse(data);