我试图根据AJAX成功调用返回的内容编写条件

时间:2014-12-08 20:50:17

标签: javascript php jquery ajax

我正在尝试检查数据库,以确保在注册过程中不存在用户名。我从数据库获取计数。

PHP代码:

if($result=mysql_query("SELECT count(*) from users where username='$requsername'"))
{
    while($row=mysql_fetch_array($result))
    {
        $usercount=$row[0];        
        echo $usercount;
    }
}
else
{
    $goof=mysql_error();
    $error = "<b>Error:</b>  $goof";
    echo $error;
}

jQuery代码:

$('#newusername').blur(function() {
    var requsername=$('#newusername').val(),
    dataString='requsername=' + requsername;
    $.ajax({
        url:'scripts/checkusername.php',
        data:  dataString,
        type:'POST',
        success:  function(data) {
            var response=data;
            if(response==="0") {
                $('#usernamestat').html('Username Available');
                $('#addusrbtn').removeAttr('disabled');
                alert(response);
            }
        }
    }
}

但它忽略了数据的价值。我做了一个警报,它正在警告来自数据库的号码,但它没有运行代码来启用我的按钮并说出可用的用户名。我不知道我做错了什么!我希望它传递或失败 - 如果它通过(没有用户发现请求的用户名)它启用提交按钮并让它们继续;但如果它没有通过并且有如果值大于0,则会显示一条错误消息,表明用户名已被占用。根本无法正常工作或根本无法识别数字!

3 个答案:

答案 0 :(得分:1)

您是否确定是否进行了ajax通话?从我记得你没有提供数据到jquery ajax函数的形式key = value但形式为{key:value}

当你无法猜出你做错了什么时,做一些调试:

  • 使用console.log(data)
  • 或使用开发人员工具或firebug并在您的成功函数中放置一个断点。
  • 或者查看网络标签,查看您的ajax请求标题是什么以及响应是什么。
  • vardump放入php代码中。
  • 使用一个体面的IDE,允许实际的tume逐行调试PHP ...
  • 安装xdebug

这么多方法......

我每天3小时使用Php风暴调试器,Dev工具另外3:)

答案 1 :(得分:1)

1)

//Hope this might help 
    //check wether control goes to else part
        success:  function(data) {
                    var response=data;
                    if(response==="0") {
                        $('#usernamestat').html('Username Available');
                        $('#addusrbtn').removeAttr('disabled');
                        alert(response);
                    }else{
                       alert("Username not available");
                }



     //if it goes to else part then change your if condition to 
        if(response === 0) {//return from php might be of integer operator(===) needs value along with type to be same
            -----
            -----
        }
        OR
        if(response == "0")

答案 2 :(得分:0)

使用mysql_num_rows代替 while循环。 它会给你行数。 然后你检查

$num_rows = mysql_num_rows($result); 
if($num_rows > 0)
{
echo 'usename already exist.';
}