Ruby on rails 使用AJAX更新Javascript变量
我正在使用FusionCharts进行一个项目,该项目要求我使用AJAX请求更新javascript变量。FusionChart使用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
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);
}
});