2010-12-02 8 views
0

updateSeriesメソッドを使用してDojo円チャートを更新しようとしています。更新されたjavascript配列データを取得するためにajax呼び出しを実行した後、メソッドを呼び出します。ここでAjaxコールの後にupdateSeriesを呼び出すとDojo Pieチャートが消えるのはなぜですか?

は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> 

そして、ここではJavaScriptがAJAX呼び出し作りです:

 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コールをした後、私は新しいデータを受け取り、更新呼び出しが行われ、グラフが消えます。コンソールに表示されるエラーはありません。

答えて

2

updateSeries()が配列を期待する場合、eventByReasonsDataが文字列であると思われます。 dojo.fromJson()を使用すると、文字列を配列に変換できます。

chart.updateSeries("eventSeries", dojo.fromJson(eventByReasonsData)); 
+0

素晴らしいです。完全に働いた。オリジナルのチャート作成はなぜ機能しますか? – ben

+0

ところで、どうもありがとうございました。それは私にかなりの時間を与えました。 – ben

+0

コンパイラがテキストリテラルを適切な配列に変換したため、慣習的に動作しました。 JSONで転送する場合は、明示的に行う必要があります。 –

関連する問題