2017-04-19 3 views
0

私はjsonファイルを破ることに問題がありますが、今はどこに問題がないのですか。ローカルの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はgetJSONcallback関数内response結果に関連するすべてのコード未定義

+1

D ' 'に依存するすべてのコードは、あなたの' .getJSON'成功関数内でなければなりません。あなたは知っています...どこに 'd =データ 'がありますか?だから...はい、ハイチャートをそこに投げる必要があります。 – PHPglue

+0

@Mamunが言ったように、私はすべてのコードを$ .getJSONに移動する必要があります。ファイルの場所に問題がありました。みなさん、ありがとうございます。 – rafik

答えて

1

場所です。これは、リクエストが完了する前にすべてのコードが実行されているために起こります。したがって、dは未定義です。

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 
     }] 

    }); 
}); 
1

これは、GET要求の非同期性によるものです。あなたが書いたコードは、GETリクエストが返る前にconsole.logステートメントを実行しました。ドキュメントが返された後に実行されるコールバック関数にロジックを配置する必要があります。

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(); 
関連する問題