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实现