我正在使用带有jquery的ajax请求发出一个奇怪的comportment,在头部的代码中.STATUS无法在名为'status'的变量中检索它似乎与另一个变量名称一起使用,我是想知道为什么?
$.ajax({
type: "GET",
url: myConnect.prototype.URL,
data: params,
error: this.errorHandler,
success: function(data){
response = JSON.parse(data);
status = response.STATUS;
if(status.SUCCESS){ //never true since status is not an object.
console.log('success !');
}
}
});
数据是:{"STATUS":{"SUCCESS":1,"DESCRIPTION":""}}
状态变量设置为字符串,我可以在chrome的Watch Expression视图中看到它的值:
status: "[object Object]"
但如果我将此变量称为't'(或其他任何内容),则该条件为真,并且会记录'成功!'
任何解释?
编辑: chrome:
显示的响应解析对象 response : Object
STATUS: Object
DESCRIPTION: ""
SUCCESS: true
_proto_: Object
_proto_: Object
答案 0 :(得分:2)
如果您将状态设为本地,则应该
$.ajax({
type: "GET",
url: WellcomsConnect.prototype.URL,
data: params,
error: this.errorHandler,
success: function(dara){
response = JSON.parse(data);
var status = response.STATUS; // make it local
if(status.SUCCESS){ //never true since status is not an object.
console.log('success !');
}
}
});
修改
下面这个解释实际上只在Chrome中使用 - Firefox工作正常 - IE9不起作用
之所以不是因为window
has a status property已经和你的Status对象被存储为字符串 - [object Object]
而不是对象
我在IE9 / Firefox / Chrome中测试了这个
Only working if Firefox - 使用全局
然后
Working in all - 使用本地