jquery if / else语句.get无法正常工作

时间:2013-09-22 07:36:36

标签: javascript php jquery get

在新用户注册表单上,我有一个非常简单的功能,只是为了检查数据库中是否存在用户名。不幸的是,声明的else部分无效。 PHP文件正常工作,并按预期返回truefalse。这是jQuery:

$('#username').keyup(function() {
        var inp = $('#username').val();
        $.get('register-check-username.php', { username: inp }, function(data) {
            if(data!="false") {
                $('#namecheck').html('✓');
            } else {
                $('#namecheck').html('This username is already taken');
            }
         });
    }); 

如果不清楚,username是文本输入的id。当它被改变时,php正在检查用户名可用性。然后,ID为“namecheck”的<span>标记将更改为告诉用户该怎么做。现在,我可以将if(data)更改为if(!data),它将按预期更改。如上所述,我可以{J}发生$('#namecheck').html('✓'),而不是$('#namecheck').html('This username is already taken')的第二部分。

为什么我的else行永远不会被调用?我浪费了太多时间试图解决这个问题,所以现在我要求大家帮忙弄清楚出了什么问题。

编辑: 当console.log(data)位于其中时,控制台会在错误时返回false,但是当它为真时,不会记录任何内容。

if(data)更新为if(data!="false")。问题依然存在。

更新 问题不是我想的那么多。看起来脚本 按照它应该触发,但如果输入值是4个字符或更少,它只会.keyup,并且我用它测试的用户名是6个字母。前4个字符返回的数据保持不变。

所以现在看起来问题实际上是它不会运行.get(),除非该值为4个字符或更少。我正在研究在php中可能导致这种情况的原因。

2 个答案:

答案 0 :(得分:4)

(数据)将始终是一个真值,因为它是一个字符串

更改为

if (data=="true") ...

如果true返回空(不是一个聪明的主意),请尝试

if (data!="false") ...

Live Demo

答案 1 :(得分:1)

有些时候发生的事情你会以布尔或简单的字符串格式返回true / false,所以Javascript不会理解。

为此你应该做出那样的条件。

if( data === true || data === "true" || data === 1 || data === "1" )
{
 // Do something here
}
else
{
 // Do something else
}