Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有.get的jquery if/else语句不起作用_Javascript_Php_Jquery_Get - Fatal编程技术网

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改成echo
true
吗?或者改成已经在工作的
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
}