2

我正在使用 FusionCharts 开展一个项目,该项目要求我使用 AJAX 请求更新 javascript 变量。FusionChart 使用标签中的 xml 填充自身,chart1.setDataXML()如下所示。

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

正如我所说,我需要使用 AJAX 请求更新该脚本中的 XML。我创建了一个更新图表的函数,但我不知道如何让 AJAX 发挥作用......这是我的函数

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

有什么办法可以让我的 AJAX 请求更新“响应”变量?

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 回答