2016-02-13 55 views
1

我似乎無法抽出解析的JSON對象的元素。從解析的JSON對象中獲取元素

var thisObj = JSON.parse(req.responseText); 
    console.log(JSON.parse(req.responseText)); 

這裏是被記錄:

Object 
data: "{"sVar":"sdf","nVar":"","dVar":"","cVar":"#000000"}" 

我曾嘗試以下方法

thisObj.data[sVar]

thisObj.data.sVar

他們都產生undefined。它似乎不在數組中。 有什麼建議嗎?

CONSOLE.LOG(req.responseText)...

{ 
    "args": {}, 
    "data": "{\"sVar\":\"asdf\",\"nVar\":\"\",\"dVar\":\"\",\"cVar\":\"#000000\"}", 
    "files": {}, 
    "form": {}, 
    "headers": { 
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Accept-Language": "en-US,en;q=0.8", 
    "Content-Length": "52", 
    "Content-Type": "application/json", 
    "Host": "httpbin.org", 
    "Origin": "http://localhost:63342", 
    "Referer": "http://localhost:63342/AssignmentAJAX/weather.html", 
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36" 
    }, 
    "json": { 
    "cVar": "#000000", 
    "dVar": "", 
    "nVar": "", 
    "sVar": "asdf" 
    }, 
    "origin": "65.128.122.251", 
    "url": "http://httpbin.org/post" 
} 
+1

您能告訴我們明確的回答嗎?它幾乎看起來像'.data'是一個字符串 – Bergi

+0

是的。控制檯日誌請求和req.responseText請發佈。 – millerbr

+2

'data'顯然是一個字符串。你需要先解析它。更好的是:將服務器端代碼修復爲節點,對您的數據進行雙重編碼。 –

回答

1

thisObjdata屬性是表示數據對象的字符串。你也應該解析它。例如:

var response = JSON.parse(req.responseText); 
var data = JSON.parse(response.data); 
console.log(data.sVar); 
+0

是的,當我這樣做的時候得到了雙重解析,就像Felix Kling提到的那樣;然而,這個解析它的方法有兩次工作。我後來回去修復了我的請求到服務器的根本問題。謝謝! – McMurroughDan