Ajaxコールの後にUpdateseriesに電話するときにDojo Pieチャートが消えるのはなぜですか?
-
30-09-2019 - |
質問
Updateseriesメソッドを使用してDojo Pieチャートを更新しようとしています。 Ajaxコールを実行した後、更新されたJavaScriptアレイデータを取得した後、メソッドを呼び出します。
これがJavaScriptです:
var eventByReasonsData = .... //gets populated on jsp page compile
var theme = dojox.charting.themes.Julie;
var eventReasonsChart = null;
function makeEventsByReason() {
var dc = dojox.charting;
eventReasonsChart = new dc.Chart2D("eventsByReasonChart");
eventReasonsChart.setTheme( theme ).addPlot("default", {
type: "Pie",
font: "normal normal 8pt Tahoma",
fontColor: "black",
labelOffset: -20,
radius: 100
}).addSeries("eventSeries", eventByReasonsData );
var anim_a = new dc.action2d.MoveSlice(eventReasonsChart, "default");
var anim_b = new dc.action2d.Highlight(eventReasonsChart, "default");
var anim_c = new dc.action2d.Tooltip(eventReasonsChart, "default");
eventReasonsChart.render();
}
これが私のHTMLです:
<div id="eventsByReasonChart" ></div>
そして、これがAjaxコールを作成するJavaScriptです:
new Ajax.Request( url, {
method: 'post',
parameters: params,
onComplete: function(response) {
if( response.responseText != "empty" )
{
var chart = eventReasonsChart;
eventByReasonsData = response.responseText;
chart.updateSeries( "eventSeries", eventByReasonsData );
chart.render();
}
}
});
最後に、チャートに送信されたときのデータがどのようにフォーマットされるかを次に示します。
[{ y:48 },{ y:1 },{ y:1 },{ y:14 },{ y:7 },{ y:3 },{ y:8 }]
チャートが最初に描画されると、すべてがクールで、問題はありません。 AJAXコールを行った後、新しいデータを受信し、更新コールが作成され、チャートが消えます。コンソールに表示できるエラーはありません。
何か案は?
解決
私はそれを疑います eventByReasonsData
文字列です updateSeries()
配列が期待されます。使用できます dojo.fromJson()
文字列を配列に変換するには:
chart.updateSeries( "eventSeries", dojo.fromJson(eventByReasonsData) );
所属していません StackOverflow