【发布时间】:2013-05-18 05:27:59
【问题描述】:
使用jQuery 1.9.1,回调服务器查看一些数据:
$form = $("#form2")
var str = $form.serialize();
status = true;
$.ajax({
type : 'POST',
url : 'check_zip.php',
data : str,
async : false,
success : function (data) {
obj = JSON.parse(data);
var result = obj.result;
status = result;
},
error : function (msg) {
alert(msg);
status = false;
}
});
if (status == "false" || status === false) {
....
我发现 Chrome 会返回状态“false”(字符串),而 Firefox 会返回状态 false(布尔值)。这是预期的行为吗?我很惊讶!
被解析的 JSON 是 data: "{"result":false}"
typeof(status) 在 Chrome 中是字符串,在 FF 中是布尔值。
问题似乎出现在这里:
var result = obj.result;
status = result;
因为Chrome中result的数据类型是boolean,而status的数据类型是string。
【问题讨论】:
-
它解析的 JSON 是什么?
-
这没有任何意义
"false"和false之间的差异不可能更大。它们绝对不是一回事。 -
我希望您不会因为不想编写异步处理代码而锁定用户的浏览器。
-
你确定它实际上是
false并且不是在ff 中未定义吗?你能发布typeof status的输出吗? -
我真的希望你没有死! :)
标签: javascript jquery google-chrome firefox