3

几天来,我一直在尝试通过 ajax 使用 HighchartsJS 绘制一个简单的折线图。我曾尝试在他们的论坛上发帖,但帮助似乎进展缓慢。

我正在使用 ASP.NET 网络表单。

服务器端

<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 回答