2015-08-29 177 views
0

我對bing API做了一個javascript查詢。在JavaScript中使用XML-http功能。閱讀xmlhttp對象

如果我打印

xmlhttp.responseText; 

它正確地返回這樣一個對象:

{ 
    "d":{ 
     "results":[ 
     { 
      "__metadata":{ 
       "uri":"Data.ashx/Bing/SearchWeb/v1/Web?Query=\u0027weltall\u0027&$skip=0&$top=1", 
       "type":"WebResult" 
      }, 
      "ID":"ec45ae51-c52b-4172-b64e-97f0db106110", 
      "Title":"Universum – Wikipedia", 
      "Description":"Universum, Weltall und Weltraum. Das Wort „Universum「 wurde im 17. Jahrhundert von Philipp von Zesen durch das Wort „Weltall「 eingedeutscht.", 
      "DisplayUrl":"/wiki/Universum", 
      "Url":"/wiki/Universum" 
     }, 
     { 
      "__metadata":{ 
       "uri":"Data.ashx/Bing/SearchWeb/v1/Web?Query=\u0027weltall\u0027&$skip=1&$top=1", 
       "type":"WebResult" 
      }, 
      "ID":"8703f1c8-f3b7-48b0-b2cf-e33071b5006e", 
      "Title":"Weltall - Wissenschaft - SPIEGEL ONLINE", 
      "Description":"Nachrichten aus der Wissenschaft über Mensch und Technik, Natur und Weltall. Aktuelle Reportagen, Analysen, Interviews.", 
      "DisplayUrl":"/wissenschaft/weltall", 
      "Url":"spiegel.de/wissenschaft/weltall/" 
     } 
     ] 
    } 
} 

到目前爲止好。但是,當我嘗試訪問所述對象的單個屬性時,沒有任何回覆:

document.getElementById("main").innerHTML = xmlhttp.d.results.uri[1]; 

該行似乎存在錯誤。我想到了像嵌套列(.d.results.uri部分)和行([1]部分))的數據庫對象。

+2

'responseText'顧名思義不是一個對象,而是一個字符串。你需要JSON.parse()它。此外,你正在分配'xmlhttp.d.results.uri [1]',但即使responsText是一個對象,它應該是'xmlhttp.responsText.d.results.uri [1]' – marekful

+0

'responseText'是一個字符串,不是一個東西。你需要先使用JSON.parse。在另一個說明中,請花點時間在下次正確設置問題時,它確實不那麼難。 – Tomalak

+0

@marekful,你爲什麼不把它寫成答案? – Shomz

回答

1

xmlhttp對象包含響應數據中的responseText屬性。因爲你面對的JSON你也可以選擇使用JavaScript的JSON.parse()因此解析,你應該能夠使用這個片段讓你期望的響應數據:

data = JSON.parse(xmlhttp.responseText); 

另外,我不認爲你正在嘗試訪問正確的節點,因爲d.results.uri[1]在您向我們顯示的json中不存在。

試着想象你的json。我通常使用this。它允許你通過簡單的點擊並複製它的路徑來獲得你想要的節點。