Google Chart API не отображает диаграмму с использованием javascript / ajax - PullRequest
0 голосов
/ 12 марта 2012

Что я делаю, так это отображаю график, когда пользователь нажимает кнопку. Диаграмма извлекается из файла PHP с использованием JavaScript. Вот код, который я на самом деле делаю.

Это функция javascript, которая выбирает график и присоединяет его к HTML DOM

function draw_graph(num) {

   var xmlhttp;
   if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
       xmlhttp=new XMLHttpRequest();
   } else { // code for IE6, IE5
       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }

   xmlhttp.onreadystatechange = function() {
       if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        var output = xmlhttp.responseText;
        document.getElementById('script_content').innerHTML = output;
       }
   }
   xmlhttp.open("GET","includes/getgraphdata.php?type="+num+"&mode=day",true);
   xmlhttp.send();

}

Это код PHP, я пытаюсь нарисовать простой график с фиктивными данными

    <?php

echo "
    <script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"></script>
        <script type=\"text/javascript\">                   
                        google.load('visualization', '1', {packages:['corechart']});
                        google.setOnLoadCallback(drawChart);
                        function drawChart() {
                            var data = new google.visualization.DataTable();
                            data.addColumn('string', 'Date');
                            data.addColumn('number', 'Sell');
                            data.addColumn('number', 'Purchase');
                            data.addRows([
                              ['12-03-2012', 150, 300],
                              ['12-04-2012', 250, 500]
                            ]);

                            var options = {
                              title: 'Graph'
                            };
                            var chart = new google.visualization.LineChart.(document.getElementById('temp'));
                            chart.draw(data, options);
                        }
                    </script>
    ";

Приведенный выше код правильно прикреплен к HTML DOM, но график не отображается.

Ответы [ 2 ]

1 голос
/ 12 марта 2012

эта строка

 var chart = new google.visualization.LineChart.(document.getElementById('temp'));

Удалить . после LineChart. Следовательно, это LineChart(document.getElementById('temp'));

Также поместите alert("statement reached"); между приведенной выше строкой и следующей строкой, чтобы отследить ошибку. Если ошибка имеет место, следующая строка может не выполняться, и, следовательно, использовать ее как преимущество отладки.

0 голосов
/ 03 апреля 2012

Я пробовал это раньше, вы не можете включать текстовый код javascript, используя ajax.

Если вы действительно хотите сделать это таким образом, вам нужно eval () responseTextstring или заставьте javascript сделать что-то на основе возвращенной строки.

например.

if(responseText == '1'){
 function1();
}else{
 function2();
}

Есть ли причина, по которой вы не можете просто включить вместо этого php-файл?

<?php
require_once 'googleapi.php';
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...