私は何日もの間、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;