JS / JQuery:无法访问json

时间:2016-11-19 10:29:46

标签: javascript jquery arrays json

我正在制作我页面上的图表。由于我使用 Django ,我必须将 JSON 数据传递到 HTML ,然后将 JSON 解析为获取数据。

问题是控制台说:

  

未捕获的TypeError:无法读取未定义(...)

的属性“0”
function drawChart() {
    var google_chart_json = {"MyKey": [[[2016, 11, 2], 156.0], [[2016, 11, 3], 69.0], [[2016, 11, 4], 126.0], [[2016, 11, 5], 67.0], [[2016, 11, 6], 97.0], [[2016, 11, 7], 193.0], [[2016, 11, 8], 96.0], [[2016, 11, 9], 64.0], [[2016, 11, 10], 117.0], [[2016, 11, 11], 190.0]]};

    $.each(google_chart_json, function (key, val) {
        console.log(key); 
        $.each(val,function (scan) {
            var year = scan[0][0]
            console.log(year)
        })
    });
    ....

正如您所见,var year应该是2016年等。

问题出在哪里?

2 个答案:

答案 0 :(得分:1)

传递给$.each回调的第一个参数是键或数组索引。第二个参数是值。你在外面的$.each得到了这个,而不是内在的。{/ p>

修正:



function drawChart() {
  var google_chart_json = {
    "MyKey": [
      [[2016, 11, 2], 156.0],
      [[2016, 11, 3], 69.0],
      [[2016, 11, 4], 126.0],
      [[2016, 11, 5], 67.0],
      [[2016, 11, 6], 97.0],
      [[2016, 11, 7], 193.0],
      [[2016, 11, 8], 96.0],
      [[2016, 11, 9], 64.0],
      [[2016, 11, 10], 117.0],
      [[2016, 11, 11], 190.0]
    ]
  };

  $.each(google_chart_json, function(key, val) {
    console.log(key);
    $.each(val, function(idx, scan) {
      var year = scan[0][0]
      console.log(year)
    })
  });
}

drawChart();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

问题是最内层循环中的scan只是键值(或者在本例中是数组索引,0-9),而不是完整的数组。

$.each(google_chart_json, function (key, val) {
    console.log(key); 
    $.each(val,function (scan) {
        console.log(google_chart_json[key][scan][0][0])
    })
});