几天来,我一直在尝试通过 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;