JQuery AJAX if-else无法正常工作

时间:2014-06-25 03:34:44

标签: php jquery ajax if-statement

我调查的这个返回数据是“已验证”,这意味着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);

        }

    });
}

3 个答案:

答案 0 :(得分:1)

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

尝试

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

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

  1. Space Before Ajax Response (jQuery, PHP)

  2. strange thing, ajax response includes whitespace

  3. Trailing spaces in Ajax response

答案 1 :(得分:1)

我也遇到过这个问题。使用响应数据中的$ .trim()可以帮助改变奇怪的空格。

答案 2 :(得分:0)

$ .post方法的默认返回类型是HTML。因此,如果您将返回类型设置为JSON,并在PHP文件中将JSON ENCODED值返回为“已验证”...可能有效