Javascript / PHP字符串相等

时间:2016-07-04 14:21:13

标签: javascript php jquery ajax

我正在运行一个AJAX调用,它有一个成功函数,它接受从php页面返回的变量,就像这样。

AJAX:

$.ajax ({  
    type: "POST",
    url: "loginrequest.php",
    data: 'username=' + username + '&password=' +pass,
    success: function(html){
        console.log(html); // returns login
        console.log(typeof html); // returns string
        console.log(html === "login"); //returns false

        if(html === 'login'){
            window.location.href = 'index.php';
        }
        else if(html === 'false'){
            alert("login failed");
        }
    }
});

PHP:

if($count == 1){
    $_SESSION['user'] = $myusername;
    $return = "login";
    echo json_encode($return);
}
else {
    $return = "false";
    echo json_encode($return);
}

正如您所看到的,我正在尝试实现一个简单的登录页面,然后重定向用户或显示警报,具体取决于从我的数据库查询返回的行数的结果。

我不明白的是:

console.log(html); // returns "login"
console.log(typeof html); // returns string
console.log(html === "login"); //returns false

我尝试在没有json_encode()的情况下回复,但它仍会给我相同的结果。我正在使用==但后来我读到使用===更安全所以我切换到了它但它仍然不会返回true。

2 个答案:

答案 0 :(得分:4)

您正在发送JSON,这意味着您要发送文字字节:

"login"
"false"

请注意那里的引号。您的JS代码需要解码JSON,或者比较原始json本身:

 result = JSON.parse(html)
 if (result == "login")

 if (html == '"login"')   // note the quotes

一个简单的console.log(html)会告诉你你正在处理什么。

答案 1 :(得分:1)

如果您在php端使用json_encode,那么您应该使用

在JavaScript方面

jQuery.parseJSON

html = jQuery.parseJSON(html);