2

私はFusionChartsを使用してプロジェクトに取り組んでおり、AJAXリクエストでjavascript変数を更新する必要があります。以下に示すように、FusionChartはchart1.setDataXML()タグ内にxmlを入力します。

<div id="barGraph">
        Bar Graph
   </div>
   <script language="JavaScript">
      var chart1= new FusionCharts("/charts/Column3D.swf", "barGraph", "600", "400", "0", "1");
      chart1.setDataXML("<chart caption='Monthly Unit Sales' xAxisName='Month' yAxisName='Units' showValues='0' decimals='0' formatNumberScale='0'><set label='Jan' value='462'/><set label='Feb' value='857'/><set label='Mar' value='671'/><set label='Apr' value='494'/><set label='May' value='761'/><set label='Jun' value='960'/><set label='Jul' value='629'/><set label='Aug' value='622'/><set label='Sep' value='376'/><set label='Oct' value='494'/><set label='Nov' value='760'/><set label='Dec' value='960'/></chart>");
      chart1.render("barGraph");
   </script>

私が言ったように、私はそのスクリプト内のそのXMLをAJAXリクエストで更新する必要があります。チャートを更新する関数を作成しましたが、AJAXを有効にする方法がわかりません...これが私の関数です

<script type="text/javascript">
    function updateChart(domId){
        var response= "<chart></chart>"
        var chartObj = getChartFromId("barGraph");
        chartObj.setDataXML(response);
    }
    </script>

AJAXリクエストに「response」変数を更新させる方法はありますか?

4

3 に答える 3

2

何かのようなもの:

new Ajax.Request('/your_remote_script.php', {
  method: 'get',
  onSuccess: function(transport) {
    var your_var = transport.responseText;
    updateChart(your_var);
  }
});
于 2009-09-04T15:04:59.007 に答える
1

ajax 呼び出しを行うためのサポートが必要なのか、コントローラーからの応答が必要なのかわかりません。コントローラー側について説明します。

コントローラーでアクションを作成します。

def update_chart
   new_something = params[:sent_value]
   render :update do |page|
     page.call 'updateChart', new_something
   end
end

render :update は、ページで実行される JavaScript を返します。

page.call は、最初の引数で指定された関数を実行し、残りの引数を .call の引数として javascript 関数に渡します。

于 2009-09-02T17:15:50.737 に答える
0

はい。XMLHttpRequest オブジェクトを使用してリクエストを送信し、XMLHttpRequest.response を独自のレスポンス変数に読み込むだけです。

その方法に関する非常に優れたチュートリアル: http://www.w3schools.com/Ajax/Default.Asp

于 2009-09-02T16:02:57.110 に答える