我正在尝试让Jquery读取一个json文件,
但不幸的是我无法让它发挥作用。
这是我的json文件。请参阅:http://bitcoincharts.com/t/weighted_prices.json
{
"USD": {"7d": "4.4549", "30d": "5.2016", "24h": "4.1373"},
"GBP": {"7d": "2.9706", "30d": "3.2620", "24h": "2.5463"},
}
我的jquery脚本看起来像这样
<script type="text/javascript">
(document).ready(function(){
$.getJSON('http://bitcoincharts.com/t/weighted_prices.json',function(data){
$("#results").html(data[0].30d);
});
});
</script>
我尝试抓住USD&gt; 30d&gt; 5.2016
答案 0 :(得分:1)
获得美元 - &gt; 30d(= 5.2016)你需要这样做:
data["USD"]["30d"]
你不能说data[0]
因为使用数字索引(通常)只适用于数组而你没有数组。您有一个具有两个属性“USD”和“GBP”的对象,并且每个属性都有一个对象,其属性为“7D”,“30d”,“24h”。
更详细:
JavaScript array 文字声明使用方括号,其中只包含元素列表,如下所示:
var myArray = ["a","b","c"];
但 object 文字声明使用大括号和键值对,就像你在问题中提供的JSON一样,或者这是一个更简单的例子:
var myObject = { "key1" : "value1", "key2" : "value2", "key3" : "value3" };
“技巧”是一旦定义了数组和对象都使用方括号表示法访问,但数组使用数字索引,对象使用字符串键。
您也可以使用像您尝试的那样使用点符号,但仅限于符合有效JavaScript标识符规则的键名称的属性,即不以数字开头,不以空格开头,不是保留字等等这些限制仅适用于点表示法,因此如果使用方括号表示法,则可以使用空格,数字等。
嵌套数组和对象很好,包括将两者混合在一起,但在特定情况下,你只有一个包含两个其他对象的对象,没有数组。
所以data["USD"]
会给你{"7d": "4.4549", "30d": "5.2016", "24h": "4.1373"}
。
data["GBP"]
会给你{"7d": "2.9706", "30d": "3.2620", "24h": "2.5463"}
。
您可以使用data["USD"]["30d"]
将其缩小到所需的个人值。
编辑:由于Ajax同源策略,您的$.getJSON
请求无法正常工作,即只允许您向与当前页面相同的域发出JSON请求。< / strong>
您可以尝试使用JSONP - jQuery支持您几乎没有任何努力:您只需将?callback=?
添加到URL的末尾 - 除了JSONP需要服务器上的支持并且它看起来像比特币人们不支持它。
因此,最简单的方法是在您的服务器端代码中获取数据,其中同源策略不会妨碍您。
答案 1 :(得分:0)
我现在很难找到引用,但问题是您无法通过点表示法访问密钥,您需要通过数组表示法访问它。在你的情况下......
data[0]["30d"]