2017-08-31 149 views
1

一個JSON API響應我在JavaScript(和jQuery)新的,我想這樣調用的API:呼叫使用jQuery

{"GOOGL":{"PRICE":950.123},"TSLA":{"PRICE":345.67}} 

我與我的代碼嘗試,但它不工作:

var list = ["GOOGL","TSLA"]; 


$(document).ready(function() { 
    $.getJSON('api.json', function(data) { 
     for (var i in list) { 
       console.log(data.list[i].PRICE); 
     }; 
    }); 
}); 

我得到了這樣的錯誤:「遺漏的類型錯誤:無法未定義讀取屬性‘0’」

任何人可以幫助我嗎?

+1

'data [list [i]]。PRICE'。 – nnnnnn

+0

這意味着'data.list'是未定義的,試着通過console.log(data)來檢查'data'的內容是什麼' – masterpreenz

+0

@nnnnnn在list var中沒有價格'var list = [「GOOGL」 ,「TSLA」];'OP不太清楚他有'{「GOOGL」:{「PRICE」:950.123},「TSLA」:{「PRICE」:345.67}}'但是在循環中他使用'list ' – guradio

回答

0

正如在評論中提到@nnnnnn,你可以這樣做:

console.log(data[list[i]].PRICE); 

爲了解釋:

list[i]將在指數i(如GOOGLTSLA)返回存儲在list值。

存儲在data{"GOOGL":{"PRICE":950.123},"TSLA":{"PRICE":345.67}})的值似乎使用的list[i]GOOGLTSLA)的值作爲密鑰。

這意味着做data["GOOGL"](與data[list[i]])會讓你{"PRICE":950.123}

然後再走一步data["GOOGL"].PRICE(與data[list[i]].PRICE)會讓你950.123

鑑於console.log(data.list[i].PRICE);不起作用,因爲它正在尋找data對象中的list屬性(它不存在)。

在這種情況下,你會看到Uncaught TypeError: Cannot read property '0' of undefinedi爲零,因爲data.list不確定的收益(和代碼試圖從它那裏得到財產0)。

0
for (var i in list) { 
    console.log(data[list[i]].PRICE); 
}; 

無法使用變量名使用點運算符訪問對象的屬性。

所以你必須使用數組符號..

0

@kevin:你不能用點運算符訪問對象鍵,你必須通過哈希內部的關鍵,如「數據[名單[I] .PRICE「