Ajaxコールの後にUpdateseriesに電話するときにDojo Pieチャートが消えるのはなぜですか?

StackOverflow https://stackoverflow.com/questions/4331568

質問

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) );
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top