JQuery AJAX if-else 不工作

Posted

技术标签:

【中文标题】JQuery AJAX if-else 不工作【英文标题】:JQuery AJAX if-else not working 【发布时间】:2014-08-15 11:45:18 【问题描述】:

我调查的这个返回数据是“经过身份验证的”,这意味着 if 语句应该生效。但是,由于我不知道的原因,它直接进入语句的 else 部分,即使数据为真,也使数据为假。喜欢"authenticated"=="authenticated"。它忽略了 if 部分,我不知道为什么。

function login_admin_user() 

    username = $("#ad-username").val();
    password = $("#ad-password").val();
    $("#button-login").val("Logging in...");

    $.post("ajax-login.php", 
        username: username,
        password: password
    , function (data) 

        if (data == "authenticated") 
            /*  Execute if authenticated */
            $("#box-login-confirmed").fadeIn("slow", function () 
                $("#button-login").val("Login");
            )
                .delay(1000)
                .fadeOut(400, function () 
                window.location = "home.php";
            );

         else 

            /*  Execute if invalid login */

            $("#box-login-error").fadeIn("slow", function () 
                $("#button-login").val("Login");
                $("#ad-password").val("");
            )
                .delay(3000)
                .fadeOut(400);

        

    );

【问题讨论】:

"authenciated"=="authenticated" 这将是错误的。您在第一个单词中缺少一个“t”。试试if(true)。另一种调试方法是在 if 语句之前 console.log(data) 以查看它实际上向您吐出什么。 如何控制台.log(数据)? ajax-login.php 的结果是“认证的”,因此它匹配上面代码中的 if 条件。但是,即使匹配条件,它也会直接转到 else 部分。 显然不行,否则你不会在这里问为什么它不工作。你试过if(true)吗?另外,在, function (data) 行之后添加console.log(data) 然后看看这个:***.com/questions/217957/… 我建议你把它放在你的 if 语句之前:console.log("'" + data + "'"); 然后查看调试日志,这样你就可以确切地看到 data 变量是什么。如果它是 else 声明,那么它显然不是你想要的,所以你必须弄清楚它有什么价值。这应该是基本的调试。记录该值或设置断点并查看该值。在不了解基本调试工具的情况下编写 javascript 非常非常困难,当然不推荐。 【参考方案1】:

我也遇到过这个问题。使用响应数据中的 $.trim() 将有助于更改奇怪的空格。

【讨论】:

【参考方案2】:

"authenciated"!="authenticated"。你错过了一个't'。您的回复也可能包含空格。因此,请检查响应中的内容。最好在进行检查之前修剪您的响应。您可以使用jquery trim 函数来删除空格。

试试看

if($.trim(data) == "authenticated")
  //Some code

else
  //Some code

为什么响应包含空格。你可以在这里找到答案

    Space Before Ajax Response (jQuery, PHP)

    strange thing, ajax response includes whitespace

    Trailing spaces in Ajax response

【讨论】:

不是缺少t。这是一个错字 还有另一种可能的空格。我也提到过 这个工作完美! $.trim(数据)。这是如何运作的?因为来自 ajax-login 的数据是这样的: echo "authenticated";没有空格但我仍然需要修剪它,即使我清楚地回显“已验证”而没有空格。 非常感谢兄弟! :)【参考方案3】:

$.post 方法的默认返回类型是 html。因此,如果您将返回类型设置为 JSON 并在您的 PHP 文件中返回一个 JSON ENCODED 值作为“已验证”.. 这可能会起作用

【讨论】:

以上是关于JQuery AJAX if-else 不工作的主要内容,如果未能解决你的问题,请参考以下文章

小白写了一堆if-else,大神实在看不下去了,竟然用策略模式直接摆平了

.NET(C#):分析IL中的if-else,while和for语句并用Emit实现

如何使用if-else条件将Json返回到表中使用trHtML + =

if-else

2.4 if-else

优雅的替换if-else语句