0

我正在使用带有 jquery 的 ajax 请求发出一个奇怪的行为,在 header 下面的代码中。无法在名为“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
4

1 回答 1

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已经有一个 status 属性,并且您的 Status 对象被存储为一个字符串 -[object Object]而不是一个对象

在此处输入图像描述

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

仅适用于 Firefox - 使用全局

然后

全面工作- 使用本地

于 2013-03-20T14:51:06.603 回答