【问题标题】:fail to get the JSON file to array for javascript [duplicate]无法将 JSON 文件放入 javascript 数组 [重复]
【发布时间】:2015-11-28 08:25:11
【问题描述】:

我已经尝试了其他线程的解决方案,但我仍然不知道问题是什么。如下所示,如果您将 json 数据键入 html。它可以正常运行。数字将变为红色。但如果我将数据放入 JSON 文件。代码无法将 JSON 文件获取到数组中。即使我将 JSON 文件放在同一个文件夹中,它也会失败。感谢您阅读我的帖子。

{ //holiday.json
  "hd": [{
      "id": "y2015m12d25",
      "desc": "Xmas"
    }, {
      "id": "y2015m12d26",
      "desc": "Xmas"
    }, {
      "id": "y2016m1d1",
      "desc": "New Year"
    }

  ]
}
<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table border="1">
  <TR>
    <td id="y2015m12d22">22</td>
    <td id="y2015m12d23">23</td>
    <td id="y2015m12d24">24</td>
    <td id="y2015m12d25">25</td>
    <td id="y2015m12d26">26</td>
    <td id="y2015m12d27">27</td>
    <td id="y2015m12d28">28</td>
    <td id="y2015m12d29">29</td>
    <td id="y2015m12d30">30</td>
  </TR>
</table>
<script>
  $(document).ready(function() {
    var myJSONObject;
    $.getJSON('http://khchan.byethost18.com/holiday.json')
      .done(function(data) {
        //var myJSONObject = JSON.parse(data);
        myJSONObject = data;
      });
    /*        var myJSONObject = {"hd":[
                {"id": "y2015m12d25","desc": "Xmas"},
                {"id": "y2015m12d26","desc": "Xmas"},
                {"id": "y2016m1d1","desc": "New Year"}
               
                ]
                }; */
    $.each(myJSONObject.hd, function(i, index) {
      $("#" + myJSONObject.hd[i].id).css("color", "red");

    });

  });
</script>

</html>

【问题讨论】:

  • 最简单的方法:将$.each 方法移到.done 中,这是一种异步方法,您不能在它之外使用响应。

标签: javascript arrays json file parsing


【解决方案1】:

$.getJSON 是一个接受回调的异步函数,这意味着您尝试获取的数据在此行之后将不可用,但是,它保证数据将在成功的情况下在回调中可用. 所以这应该可行,

$.getJSON('http://khchan.byethost18.com/holiday.json')
  .done(function(data) {
    myJSONObject = data;
    $.each(myJSONObject.hd, function(i, index) {
      $("#" + myJSONObject.hd[i].id).css("color", "red");
    });
});

【讨论】:

  • 谢谢。您的解决方案解决了我的问题。
  • 不客气。您也可以将其标记为已接受的答案。 :)
猜你喜欢
  • 1970-01-01
  • 2019-08-29
  • 2020-05-05
  • 1970-01-01
  • 2017-10-16
  • 2021-12-30
  • 1970-01-01
  • 2019-01-06
  • 2018-12-11
相关资源
最近更新 更多