在新用户注册表单上,我有一个真正简单的功能,就是检查数据库中是否存在用户名。不幸的是,else声明的一部分不起作用。PHP 文件工作正常,并按预期返回trueor 。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 中可能导致这种情况的原因。