2013-03-20 17 views
0

我發佈了一個奇怪的comportment,使用帶有jquery的ajax請求,在頭文件下面的代碼中.STATUS無法在名爲'status'的變量中檢索到,它似乎工作正常罰款與另一個變量名,我想知道爲什麼?在ajax回調中使用變量'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的關注表達看法值:

status: "[object Object]" 

,但如果我把這個變量「 t'(或其他)的條件將是真實的,它會記錄'成功!'

有什麼解釋?

編輯: 響應由鉻顯示解析對象:

response : Object 
     STATUS: Object 
      DESCRIPTION: "" 
      SUCCESS: true 
     _proto_: Object 
_proto_: Object 
+2

請注意'數據'不存在...您在函數參數中將其稱爲'dara' – musefan 2013-03-20 14:41:53

+1

首先,將您的'dataType'設置爲'「json」'並移除'JSON.parse',讓jQuery爲你解析。儘管在理論上應該不會對結果產生任何不可區分的影響。如果您將console.log數據解析爲對象後獲得了什麼結果? – 2013-03-20 14:44:43

+0

你有一個小提琴的例子嗎? – 2013-03-20 14:45:01

回答

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已經和你的狀態對象得到作爲字符串存儲 - [object Object]而不是一個對象

enter image description here

我在IE9 /火狐/鉻

Only working if Firefox測試這 - 使用全局

然後

Working in all - 使用本地

+0

呵呵我知道沒有'var'會導致問題。工作很好。 – ChaosPandion 2013-03-20 14:54:31