0

私はJSに関してかなりの初心者なので、これはばかげた質問かもしれません...

Highscore Master/Detail チャートを実行しようとしています (サンプルhttp://jsfiddle.net/VhqaQ/を参照)。data配列は、jQuery.ajax 呼び出しで埋められる必要があります。

$(function () {

    var masterChart,
        detailChart,
        data=[],
        chatter=[],
        indizies=[];

    $(document).ready(function() {

        $.ajax({
            url: 'index.php',
            data: 'type=1363435001',
            dataType: 'json',
            success: function(json) {
                data = json.range;
                scatter =  json.scatter;
                indizies = json.indizies;

            },
            error: function (xhr, status, error) {
               alert('Status: ' + status +' Error: ' + error);
            }
        });

        // create the master chart
        function createMaster() {
            masterChart = new Highcharts.Chart({

            .......
                series: [{
                    type: 'columnrange',
                    name: 'Intervall',
                    pointInterval: 1,
                    pointStart: 0,
                    data: data
                }],
            });
        }

            ........

        createMaster();
   });
});

しかし、このようにチャートは空のままです。dataこれはアレイの範囲の問題ですか? または、呼び出されdataたときにまだ初期化されていませんか?new Highcharts.Chart( ...)

ajax 部分をテストしました - データは適切に入力されています。だから、これは問題ではありません...

多分私はajax呼び出しをどこかに置くべきですか?

4

1 に答える 1

1

$.ajax 呼び出しのコールバックで createMaster() を呼び出し、データを渡します。現在、ajax 呼び出しの初期化時にデータが返されたと想定していますが、そうではない可能性が最も高いです。コールバック内に関数呼び出しを配置すると、データが存在することが保証されます。

$.ajax({
    url: 'index.php',
    data: 'type=1363435001',
    dataType: 'json',
    success: function(json) {
        data = json.range;
        scatter =  json.scatter;
        indizies = json.indizies;

        createMaster(data);
    },
    error: function (xhr, status, error) {
        alert('Status: ' + status +' Error: ' + error);
    }
});

// create the master chart
    function createMaster(data) {
        masterChart = new Highcharts.Chart({

        .......
            series: [{
                type: 'columnrange',
                name: 'Intervall',
                pointInterval: 1,
                pointStart: 0,
                data: data
            }],
        });
    }
于 2013-03-19T18:31:41.230 に答える