3

私は何日もの間、ajaxを介してHighchartsJSを利用して単純な折れ線グラフをプロットしようとしてきました。私は彼らのフォーラムに投稿しようとしましたが、助けが遅れているようです。

ASP.NETWebフォームを使用しています。

サーバ側

<WebMethod(EnableSession:=True)> _
    Public Function getData() As String

        Dim dr As DataRepository = New DataRepository
        Dim data As List(Of ArrayList) = New List(Of ArrayList)

        For Each q In dr.getAllData()
            Dim a As New ArrayList
            Dim d As Date = q.DateTime
            a.Add(d.Ticks)
            a.Add(q.TotalRevenue)
            data.Add(a)
        Next

        Dim ser As Serie = New Serie(data)

        Dim str As String = JsonConvert.SerializeObject(ser)

        Return str

    End Function

これにより、次のjsonオブジェクトが返されます。すべてを囲む二重引用符に注意してください。

"{"data":
    [
        [634420512000000000,100000.0000],
        [634421376000000000,100086.0000],
        [634422240000000000,100171.0000],
        [634423104000000000,100257.0000]
    ]
}"

クライアントサイド私は上記の関数を呼び出して、そのようにチャートをレンダリングしています。

$(document).ready(function () {
    var options = {
        chart: {
            renderTo: 'container',
            defaultSeriesType: 'line'
        },
        title: {},
        xAxis: {
            type: 'datetime'
        },
        yAxis: {},
        series: []
    };

    $.ajax({
        type: "POST",
        dataType: "json",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        url: "_services/ScriptService.asmx/getData",
        success: function (items) {

            var obj = jsonParse(items.d);
            var series = { data: [] };

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

            options.series.push(series);

        },
        cache: false,
        error: function (XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); }
    });
    chart = new Highcharts.Chart(options);
});

上記の呼び出しの「アイテム」は次のとおりです。

"{"data":
    [
        [634420512000000000,100000.0000],
        [634421376000000000,100086.0000],
        [634422240000000000,100171.0000],
        [634423104000000000,100257.0000]
    ]
}"

'jsonParser(items.d')を使用して、正しいjsonオブジェクトを作成します(二重引用符を削除します)。

'obj'には私のjsonオブジェクトが含まれ、firebugで検査されたときの'item'は次のようになります。

[
    [634420512000000000, 100000], 
    [634421376000000000, 100086], 
    [634422240000000000, 100171], 
    [634423104000000000, 100257]
]

チャートがレンダリングされるとき、ポイントはプロットされません。私は何が間違っているのですか?

問題を解決しました。

行を変更する必要があります

series.data.push(obj.data);

に;

series.data = obj.data;
4

2 に答える 2

1

イベントchart = new Highcharts.Chart(options);の中に入れます。success

于 2011-06-05T11:42:50.467 に答える
1

問題を解決しました。

回線変更が必要

series.data.push(obj.data);

に;

series.data = obj.data;
于 2011-06-05T12:24:33.273 に答える