加载本地json文件并将结果分配给变量

时间:2017-04-19 23:59:49

标签: javascript json parsing getjson

我在填写json文件时遇到问题,我现在不知道问题出在哪里,希望你帮助我。

<script type="text/javascript">
var d;
$.getJSON("empl-estab.json", function (data) {
d=data;
});
console.log(d);
var chart = Highcharts.chart('container', {
title: {
                        text: 'Statistiques'
                    },
                    subtitle: {
                        text: 'Plan'
                    },
                    xAxis: {
                        categories: d.categories,
                    },
                    series: [{
                            type: 'column',
                            colorByPoint: true,
                            data: d.data,
                            showInLegend: false
                        }]

                });
</script>
  

错误是:d未定义

3 个答案:

答案 0 :(得分:1)

将与response结果相关的所有代码放在getJSON的{​​{1}}函数中。发生这种情况是因为外部的所有代码都在请求完成之前执行。因此callback未定义。

d

答案 1 :(得分:1)

这是由于GET请求的异步性质。您编写的代码在GET请求返回之前执行console.log语句。您希望将逻辑放在返回文档后执行的回调函数中。

答案 2 :(得分:0)

此外,在async function内部变量可以等待下载而不会出现问题:

async function load() {
    //The await keyword will make the d variable wait for the json file
    var d = await fetch('empl-estab.json').then(file => file.json());

    //Now your d variable is avaliable
    console.log(d);    
}
load();