Ruby on rails 使用AJAX更新Javascript变量

Ruby on rails 使用AJAX更新Javascript变量,ruby-on-rails,xml,ajax,prototypejs,fusioncharts,Ruby On Rails,Xml,Ajax,Prototypejs,Fusioncharts,我正在使用FusionCharts进行一个项目,该项目要求我使用AJAX请求更新javascript变量。FusionChart使用chart1.setDataXML()标记中的xml填充自身,如下所示 <div id="barGraph"> Bar Graph </div> <script language="JavaScript"> var chart1= new FusionCharts("/charts/Colu

我正在使用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>

条形图
var chart1=新的FusionCharts(“/charts/Column3D.swf”,“条形图”,“600”,“400”,“0”,“1”);
图表1.setDataXML(“”);
图表1.渲染(“条形图”);
正如我所说,我需要用AJAX请求更新脚本中的XML。我已经创建了一个更新图表的函数,但我不知道如何让AJAX发挥作用。。。这是我的函数

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

功能更新部分(domId){
var response=“”
var chartObj=getChartFromId(“条形图”);
setDataXML(响应);
}

有没有办法让AJAX请求更新“response”变量?

有。只需使用XMLHttpRequest对象发送请求,并将XMLHttpRequest.response读入您自己的响应变量

关于如何执行此操作的非常好的教程:

我不确定您是否需要帮助进行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函数的参数。

类似于:

new Ajax.Request('/your_remote_script.php', {
  method: 'get',
  onSuccess: function(transport) {
    var your_var = transport.responseText;
    updateChart(your_var);
  }
});