在新用户注册表单上,我有一个真正简单的功能,就是检查数据库中是否存在用户名。不幸的是,else
声明的一部分不起作用。PHP 文件工作正常,并按预期返回true
or 。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 正在检查用户名的可用性。然后一个<span>
id 为“namecheck”的标签将更改以告诉用户发生了什么。现在,我可以更改if(data)
为if(!data)
,并且它将按照该更改的预期运行。如上所述,我可以$('#namecheck').html('✓')
在应该发生的时候发生,但永远不会发生$('#namecheck').html('This username is already taken')
.
为什么我的else
线路从来没有被调用?我已经浪费了太多时间试图自己解决这个问题,所以现在我请求大家帮助找出问题所在。
编辑:console.log(data)
在那里,控制台false
在它为假时返回,但当它为真时没有记录任何内容。
更新if(data)
为if(data!="false")
. 问题依然存在。
更新
问题不是我想的那样。看起来脚本正在按应有的方式触发,除了它仅.keyup
在输入值为 4 个字符或更少并且我一直在测试它的用户名是 6 个字母时才会触发。前 4 个字符返回的数据保持不变。
所以现在看起来问题实际上是它不会运行.get()
,除非值是 4 个字符或更少。我正在调查 php.ini 中可能导致这种情况的原因。