2009-09-02 92 views
2

我正在使用FusionCharts開發項目,該項目需要我使用AJAX請求更新JavaScript變量。 FusionChart使用chart1.setDataXML()標籤中的xml填充自身,如下所示。使用AJAX更新Javascript變量

<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請求更新的迴應'變量?

回答

2

類似:

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

謝謝,這做到了。 – ryan 2009-09-09 22:30:27

0

是的。只需使用XMLHttpRequest對象發送請求並將XMLHttpRequest.response讀入您自己的響應變量。

一個關於如何做到這一點很好的教程: http://www.w3schools.com/Ajax/Default.Asp

1

我不知道,如果你需要幫助,使Ajax調用,或從控制器響應它,我要說明控制器側。

在控制器拍動作:

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

渲染:更新返回,將獲得在頁面上運行JavaScript。

page.call將運行第一個參數中給出的函數,並將其餘參數傳遞給.call作爲參數給javascript函數。