我正在运行一个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。
答案 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
,那么您应该使用
jQuery.parseJSON
。
html = jQuery.parseJSON(html);