1

そのため、ライブラリEChartsを使用して、Web サイトにあるさまざまなデータのチャートとグラフを作成しています。ライブラリを使用するのはこれが初めてで、Javascript/jQuery にはかなり慣れていません。私がやろうとしているのは、曜日を含む配列を持つ JSON オブジェクトを返すローカル ページからの結果に xAxis データを設定することです。これができたら、同じ方法で Series データをロードする予定です。

返されるjsonはこれ

ここに画像の説明を入力

xAxis のデータを設定しようとしているときは、次のようにしています。

xAxis: [{
    type: 'category',
    boundaryGap: false,
    data: function(){
        $.ajax({
            type: "POST",
            url: "ajax/getData.php?test=t&graph_last_days=d&days=7",
            cache: false,
            success: function(result){
                return result.data;
                //console.log(result.data);
            }
        });
    }

}],

ただし、エラーUncaught TypeError: o.slice is not a function が発生し続け、このエラーは、このデータ設定方法を使用しようとしたときにのみ出力されます。これに加えて、外部ページからデータを返す関数を作成してそれに変数を設定しようとすると、コンソールに出力しようとするたびにundefinedと表示されます

外部データをロードしようとする方法を使用せず、そのようにデータを事前定義した場合

xAxis: [{
    type: 'category',
    boundaryGap: false,
    data: [
        'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'
    ]
}]

その後、エラーは発生せず、正常に動作します

誰でも問題を見ることができますか?

4

2 に答える 2

1

Echarts が Ajax 呼び出しからデータをプッシュする完全な例

data.importPorts -> 文字列の配列 data.importBD -> オブジェクトの配列 { clientanem : [4,5,6,7,3]}

$.get("/Home/Graph1", { clients: "403,300", years: "2012" })
          .done(function (data) {
              var option = {
                  tooltip: {
                      show: true
                  },
                  legend: {
                      data: (function () {
                          var res = [];
                          for (var name in data.importBD) {
                              res.push(name);
                          };
                          return res;
                      })()
                  },
                  xAxis: [
                      {
                          type: 'category',
                          data: (function () {
                              var res = [];
                              data.importPorts.forEach(function (i) {
                                  res.push(i);
                              });
                              return res;
                          })()
                      }
                  ],
                  yAxis: [
                      {
                          type: 'value'
                      }
                  ],
                  series: [
                      {

                      }
                  ]
              };

              for (var name in data.importBD) {
                  var obj = {
                      name: name,
                      type: "bar",
                      data: data.importBD[name]
                  };

                  option.series.push(obj);

              }
              // Load data into the ECharts instance
              imprtChart.setOption(option);
          });
于 2016-12-01T22:13:46.143 に答える