在新用户注册表单上,我有一个非常简单的功能,只是为了检查数据库中是否存在用户名。不幸的是,声明的else
部分无效。 PHP文件正常工作,并按预期返回true
或false
。这是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中可能导致这种情况的原因。
答案 0 :(得分:4)
(数据)将始终是一个真值,因为它是一个字符串
更改为
if (data=="true") ...
如果true返回空(不是一个聪明的主意),请尝试
if (data!="false") ...
答案 1 :(得分:1)
有些时候发生的事情你会以布尔或简单的字符串格式返回true / false,所以Javascript不会理解。
为此你应该做出那样的条件。
if( data === true || data === "true" || data === 1 || data === "1" )
{
// Do something here
}
else
{
// Do something else
}