1

ハイチャートに動的にデータを読み込もうとしていますが、問題があります。私は多くの方法でこれをやろうとしましたが、データはJSにロードされているようですが、グラフはプロットされていません.

現在、これはjQueryのdocument ready関数の私のコードです:

options = {
    chart: {
        renderTo: 'container',
        zoomType: 'x',
        animation: true,
    },
    title: {
        text: null
    },
    subtitle: {
        text: null
    },
    xAxis: {
        type: 'datetime',
        title: {
            text: null
        },
    },
    yAxis: {
        title: {
            text: 'Size',
        },
    },
    legend: {
        enabled: false
    },

   series: [{
        data: []
    }]
}

$.ajax({
        type: "GET",
        url: "works/load_data.php",
        data: "id=3&mdate=2012-02&mxdate=2012-03",
        success: function (items) {

            var obj = eval(items).load;
            var series = { data: [] };

            $.each(obj, function (itemNo, item) {
                series.data.push(item);
            });

            options.series.push(series);

        },
        cache: false,
});
var chart = new Highcharts.Chart(options);

グラフ上では何も起こりません。しかし、グラフ オプションをコンソールに記録すると、次のようになります。

ここに画像の説明を入力

私のPHPは次のよ​​うなデータをエコーし​​ています: data = {load:[ {x: Date.UTC(2012,2,1,7,15), y: 0.012},{x: Date.UTC(2012,2,1,7,30), y: 0.068} ... ]}

少なくとも私には大丈夫のようです。しかし、それは機能していません:(誰かが私が間違っていることを教えてもらえますか??ありがとう。

4

1 に答える 1

2

AJAX は非同期です。つまり、チャートをレンダリングした後に呼び出しが行われます。次のように、成功イベントの後にチャートの作成を固執してみてください。

$.ajax({
        type: "GET",
        url: "works/load_data.php",
        data: "id=3&mdate=2012-02&mxdate=2012-03",
        success: function (items) {

            var obj = eval(items).load;
            var series = { data: [] };

            $.each(obj, function (itemNo, item) {
                series.data.push(item);
            });

            options.series.push(series);


            var chart = new Highcharts.Chart(options);

        },
        cache: false,
});
于 2012-05-14T20:19:46.767 に答える