【发布时间】: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)然后看看这个:stackoverflow.com/questions/217957/… -
我建议你把它放在你的
if语句之前:console.log("'" + data + "'");然后查看调试日志,这样你就可以确切地看到data变量是什么。如果它是else声明,那么它显然不是你想要的,所以你必须弄清楚它有什么价值。这应该是基本的调试。记录该值或设置断点并查看该值。在不了解基本调试工具的情况下编写 Javascript 非常非常困难,当然不推荐。
标签: php jquery ajax if-statement