带有 .get 的 jquery if/else 语句不起作用



在新用户注册表上,我有一个非常简单的功能,只是为了检查数据库中是否存在用户名。不幸的是,语句的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),它将按照该更改的预期运行。如上所述,我可以在应该发生的时候发生$('#namecheck').html('✓'),但永远不会发生$('#namecheck').html('This username is already taken')的第二部分。

为什么我的else线路从未被调用?我浪费了太多时间试图自己解决这个问题,所以现在我向你们寻求一些帮助,以找出出了什么问题。

编辑:如果console.log(data)在那里,控制台会在 false 为 false 时返回,但在为 true 时不会记录任何内容。

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

更新问题并不完全是我想象的那样。看起来脚本正在按预期触发,除了它仅在输入值为 4 个字符或更少时才.keyup,并且我一直在测试它的用户名是 6 个字母。为前 4 个字符返回的数据保持不变。

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

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

更改为

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

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

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

现场演示

有时发生的事情

你会以布尔或简单的字符串格式返回true/false,所以Javascript不会理解这一点。

为此,您应该制定这样的条件。

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

最新更新