我有一些php检查用户是否登录并返回false,然后通过ajax将其传递给浏览器,让用户知道他需要登录。
在FF中运行完美,警报返回'true'但在IE中,无论我做什么,它都会返回'null
// Check for logged in user
$.getJSON(baseUrl+"index.php/login/checkState", function(data) {
alert(data);
if(data==true){
dologInState();
}else{
dologOutState();
}
});
PS:从PHP返回的字符串只是假
有什么想法吗?
答案 0 :(得分:8)
如果您的JSON有效(请参阅json.org和JSONlint),data
将是一个对象或数组,而不是一个标志。
字符串false
本身不是有效的JSON。 JSON表示法中的顶级始终是对象({ ... }
)或数组([ ... ]
)。要使其成为有效的JSON,您可以这样做:
{"success": false}
...然后测试
$.getJSON(baseUrl+"index.php/login/checkState", function(data) {
alert(data);
if(data.success){ // <== Note here we're checking the `success` property of the deserialized object
dologInState();
}else{
dologOutState();
}
});
一些“JSON”解析器实际上是完整的 JavaScript表达式解析器(基本上只使用eval
,虽然这很危险),它可以解释字符串false
你想要的方式,但你不能依赖它(因为正确的解析器会拒绝它)。
答案 1 :(得分:0)
我最终设法解决了这个问题。问题不是开始时的ajax调用。
这是ajax调用从php中获取其真实和错误值,做一个简单的“是验证cookie存在”检查。
我无法告诉你这是怎么或为什么这个在FF中运行并在IE中运行它可能是我做过的事情 - 但是 - 因为90%的应用程序是由js和ajax调用构建的,所以解决方案是处理使用Java脚本进行所有cookie检查,而不是使用PHP。
我甚至现在已经有了存储json字符串的cookie,它很漂亮。
感谢所有帮助人员,非常感谢。