0

私の JSON は次のようになります: [[[773,1363709520],[774,1363709580]],[[1546,1363709520],[1548,1363709580]]]

新しい JSON 配列 [[1546,1363709520],[1548,1363709580]] に到達するたびに、ハイチャートで新しいシリーズを作成したいと思います。

ハードコーディングされたバージョンがありますが、データを [[]] にしても役に立ちません...

$(function () {

var data = [];
var data1 = [];
$.ajax({
    url: "http://localhost:8080/vdm-stats-core/stats/metrics?from=2&src=org.example.fib&customer=customer0&server=server0&metric=responses.count",
    dataType: "jsonp", // Notice! JSONP <-- P (lowercase)
    jsonp: "callback",
    success: function (inData) {
        console.log(inData[0][1][0]);
        var xval = new Date();
        for (a = 0; a < inData.length; a++) {
            for (i = 0; i < inData[a].length; i++) {
                var yval = inData[a][i][0];
                xval = inData[a][i][1];
                var x = [xval, yval];
                if (a == 0) {
                    data.push(x);
                }
                if (a > 0) {
                    data1.push(x);
                }
            }
        }
        var chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container'
            },
            title: {
                text: 'Test',
            },

            rangeSelector: {
                selected: 1
            },

            xAxis: {
                type: 'datetime'
            },

            series: [{
                name: 'Customer0',
                data: data
            }, {
                name: 'Customer1',
                data: data1
            }]
        });
    },
    error: function () {
        console.log(arguments);
    }
});

});

助けてください!

4

3 に答える 3

1

私はあなたのコードを理解しようとしましたが、これが私の解釈です。

function success(inData) {

   var customerNr,
       timestamp,
       VALUE = 0,
       TIMESTAMP = 1,
       series = {},
       len = inData.length,
       yval,
       item;

        for (customerNr = 0; customerNr < len; customerNr++) {
            // Init series object literal for customer
            series[customerNr] = {
                name : 'Customer '+customerNr.toString(),
                data : []
            };
            // Setup data for customer
            for (item = 0; item < inData[customerNr].length; item++) {
                yval = inData[customerNr][item][VALUE];
                timestamp = inData[customerNr][item][TIMESTAMP];
                series[customerNr].data.push([timestamp,yval]);
            }
            // Add series, but redraw only on last customer
            chart.addSeries(series[customerNr],customerNr===len-1);

        }

};

顧客ごとにシリーズ オブジェクトをリサイクルしますが、customerNr プロパティを追加しました。Highchart の addSeries メソッドは、デフォルトでチャートを再描画します ( http://api.highcharts.com/highcharts#Chart.addSeries() )。最後の顧客のグラフのみを再描画することを選択しました。フォークされたフィドルの例; http://jsfiddle.net/hkskoglund/VVLNV/

于 2013-03-19T21:22:31.253 に答える
0

動作するようになりました: シリーズ データをリセットする必要がありました。

$(function () {
        var chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container'
            },
            title: {
                text: 'Test',
            },

            rangeSelector: {
                selected: 1
            },
            xAxis: {
                type: 'datetime'
            },

            series: []
        });

$.ajax({
    url: "http://localhost:8080/vdm-stats-core/stats/metrics?from=200&src=org.example.fib&customer=customer0&server=server0&metric=responses.count",
    dataType: "jsonp", // Notice! JSONP <-- P (lowercase)
    jsonp: "callback",
    success: function (inData) {
        var xval = new Date();
        var series = {
            name: 'Customer',
            data: []
        }
        for (a = 0; a < inData.length; a++) {
            for (i = 0; i < inData[a].length; i++) {
                var yval = inData[a][i][0];
                xval = inData[a][i][1];
                var x = [xval, yval];
                 series.data.push(x);
            }
            chart.addSeries(series);
            series.data = [];
        }
    },
    error: function () {
        console.log(arguments);
    }
});

});

于 2013-03-19T18:49:37.417 に答える
0

覚えておくべき重要なことは、シリーズ オブジェクトが既に json オブジェクトであるということです... したがって、json ファイルの作成を制御すると仮定すると、json 出力をシリーズ オブジェクト全体としてフォーマットするのが最も簡単な方法です。

[{ name: 'Customer0', data: [[773,1363709520],[774,1363709580]] }, { name: 'Customer1', data: [[1546,1363709520],[1548,1363709580]] }]

その後:

series: myData
于 2013-03-19T16:37:55.070 に答える