Javascript 带有.get的jquery if/else语句不起作用
在一个新的用户注册表单上,我有一个非常简单的函数,用于检查数据库中是否存在用户名。不幸的是,语句的Javascript 带有.get的jquery if/else语句不起作用,javascript,php,jquery,get,Javascript,Php,Jquery,Get,在一个新的用户注册表单上,我有一个非常简单的函数,用于检查数据库中是否存在用户名。不幸的是,语句的else部分不起作用。PHP文件工作正常,并按预期返回true或false。以下是jQuery: $('#username').keyup(function() { var inp = $('#username').val(); $.get('register-check-username.php', { username: inp }, function(data)
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”的
标签将被更改,以告诉用户发生了什么。现在,我可以将if(data)
更改为if(!data)
,它的行为将与预期的更改一样。如上所述,我可以获得$('#namecheck').html('✓')
在应该发生的时候发生,但绝不是$('#namecheck').html的第二部分(“此用户名已被使用”)
为什么我的else
线路从来没有被调用过?我已经浪费了太多的时间试图自己解决这个问题,所以现在我请求你们大家帮我找出哪里出了问题
编辑:
如果控制台中有console.log(data)
,则控制台在为false时返回false
,但在为true时不记录任何内容
将if(数据)
更新为if(数据!=“false”)
。问题仍然存在
更新
问题并不是我想象中的那样。看起来脚本启动正常,只是如果输入值为4个字符或更少,并且我测试的用户名为6个字母,那么它只执行。keyup
。前4个字符返回的数据保持不变
因此,现在看起来问题实际上是它不会运行.get()
,除非该值为4个字符或更少。我正在研究在php中可能导致这种情况的原因。(数据)将始终是真实值,因为它是一个字符串
改为
if (data=="true") ...
如果true返回空(不是一个聪明的主意),请尝试
有一段时间,发生的事情会以布尔或简单字符串格式返回true/false,因此Javascript无法理解这一点 为此,你应该创造这样的条件
if( data === true || data === "true" || data === 1 || data === "1" )
{
// Do something here
}
else
{
// Do something else
}
什么是
console.log(数据)
show?当它为假时显示'false',当它为真时显示nothing。我把它放在var inp
行的正下方。你能把你的php改成echotrue
吗?或者改成已经在工作的false
?php已经根据数据库中用户名的存在说了true或false。也许我是misu理解你的意思。“如果是真的,则不会记录任何内容”-你是说会记录一个空字符串,还是说根本不会发生任何事情(意味着某种错误)。你确定回调函数实际上是针对真实情况调用的吗?我已经尝试了这两种方法,但遇到了相同的问题。它只会发生变化(或登录到控制台)如果它为false,则当它为true时永远不会出现。else
语句仍被忽略。那么您的调用不正确。能否显示register check username.php?username+existinguser
返回的内容?如果我以register check username.php?username=existinguser的身份进入php页面,它将回显“true”,如果您执行register check username、 php?用户名+不存在的用户
if( data === true || data === "true" || data === 1 || data === "1" )
{
// Do something here
}
else
{
// Do something else
}