在ajax回调中使用变量'status'

时间:2013-03-20 14:36:40

标签: jquery ajax json

我正在使用带有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

1 个答案:

答案 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]而不是对象

enter image description here

我在IE9 / Firefox / Chrome中测试了这个

Only working if Firefox - 使用全局

然后

Working in all - 使用本地