Обновление переменной Javascript с помощью AJAX

Я работаю над проектом с FusionCharts, который требует от меня обновления переменной javascript с помощью запроса AJAX. 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>

Как я уже сказал, мне нужно обновить этот XML в этом сценарии с помощью запроса AJAX. Я создал функцию, которая обновляет диаграмму, но не могу понять, как использовать AJAX... Вот моя функция

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

Есть ли способ заставить мой запрос AJAX обновить переменную «ответ»?


person ryan    schedule 02.09.2009    source источник


Ответы (3)


что-то типа:

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

Я не уверен, нужна ли вам помощь в выполнении вызова 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.

person Tilendor    schedule 02.09.2009

да. Просто отправьте запрос, используя объект XMLHttpRequest, и прочитайте XMLHttpRequest.response в свою собственную переменную ответа.

Очень хороший учебник о том, как это сделать: http://www.w3schools.com/Ajax/Default.Asp

person KJ Saxena    schedule 02.09.2009