0

我是一个关于 JS 的新手,所以这可能是一个愚蠢的问题......

我尝试做一个高分主/详细图表(参见示例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 回答