2009-09-02 4 views
2

Je travaille sur un projet avec FusionCharts qui nécessite de mettre à jour une variable javascript avec une requête AJAX. FusionChart se remplit avec le xml dans la balise chart1.setDataXML() comme vu ci-dessous.Mise à jour d'une variable Javascript avec AJAX

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

Comme je l'ai dit, je dois mettre à jour que XML dans ce script avec une requête AJAX. J'ai créé une fonction qui met à jour le tableau, mais je ne peux pas comprendre comment mettre AJAX en jeu ... Voici ma fonction

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

Est-il possible que je peux faire ma demande AJAX mise à jour de la « réponse 'variable?

Répondre

2

quelque chose comme:

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

Merci, qui l'a fait. – ryan

0

Oui. Envoyez simplement la demande en utilisant un objet XMLHttpRequest et lisez la réponse XMLHttpRequest dans votre propre variable de réponse.

Un très bon tutoriel sur la façon de le faire: http://www.w3schools.com/Ajax/Default.Asp

1

Je ne sais pas si vous avez besoin d'aide faire l'appel ajax, ou d'y répondre du contrôleur, je vais vous expliquer le contrôleur côté.

Dans le contrôleur faire une action:

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

render: mise à jour retourne javascript qui se lancer sur la page. Page.call exécutera la fonction donnée dans le premier argument, et passera le reste des arguments à .call comme arguments à la fonction javascript.

Questions connexes