【问题标题】:jquery if/else statement with .get not working [closed]带有.get的jquery if/else语句不起作用[关闭]
【发布时间】:2013-09-22 07:36:35
【问题描述】:

在新用户注册表单上,我有一个非常简单的功能,就是检查数据库中是否存在用户名。不幸的是,声明的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),它会按照预期的变化运行。如上所述,我可以让$('#namecheck').html('✓') 在它应该发生的时候发生,但绝不会在$('#namecheck').html('This username is already taken') 的第二部分发生。

为什么我的else 线路从未被调用?我已经浪费了太多时间试图自己解决这个问题,所以现在我请求大家帮助找出问题所在。

编辑: 有了console.log(data),控制台在它为假时返回false,但当它为真时没有记录任何内容。

将if(data) 更新为if(data!="false")。问题依然存在。

更新 问题不是我想的那样。看起来脚本 正在 正常触发,但它仅在输入值为 4 个字符或更少且我一直在测试它的用户名是 6 个字符时才执行 .keyup。前 4 个字符返回的数据保持不变。

所以现在看起来问题实际上是它不会运行.get(),除非该值是 4 个字符或更少。我正在调查 php 中可能导致此问题的原因。

【问题讨论】:

  • console.log(data) 显示什么?
  • 当它为假时显示“假”,当它为真时什么也不显示。我把它放在var inp 行的正下方
  • 你能把你的 php 改成 echo true,否则改成已经工作的 false?
  • php 已经根据数据库中该用户名的存在说真或假。也许我误解了你的意思。
  • “当它为真时没有记录” - 你是说记录了一个空字符串,还是什么也没发生(暗示某种错误)。您确定回调函数实际上是针对真实情况调用的吗?

标签: javascript php jquery get


【解决方案1】:

(data) 总是一个真实的值,因为它是一个字符串

改成

if (data=="true") ...

如果 true 返回空(不是一个聪明的主意)尝试

if (data!="false") ...

Live Demo

【讨论】:

  • 我已经尝试了这两种方法,但我遇到了同样的问题。如果它是假的,它只会改变(或记录到控制台),而不是当它是真的时。 else 语句仍被忽略。
  • 那你的调用不正确。你能显示register-check-username.php?username+existinguser 返回的内容吗?
  • 如果我以 register-check-username.php?username=existinguser 身份进入 php 页面,它会回显“true”
  • 如果你这样做了register-check-username.php?username+nonexistinguser
【解决方案2】:

有时你会以布尔或简单字符串格式返回真/假,所以 Javascript 无法理解。

为此你应该做出这样的条件。

if( data === true || data === "true" || data === 1 || data === "1" )
{
 // Do something here
}
else
{
 // Do something else
}

【讨论】:

    猜你喜欢
    • 2017-03-21
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2022-11-29
    相关资源
    最近更新 更多