Google图表API未使用javascript / ajax显示图表

时间:2012-03-12 08:15:56

标签: php google-visualization

我正在做的是在用户点击按钮时显示图表。该图表是使用javascript从PHP文件中获取的。这是我正在做的代码。

这是获取图形并将其附加到HTML DOM

的javascript函数
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 个答案:

答案 0 :(得分:1)

这一行

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

.之后移除LineChart。因此,它是LineChart(document.getElementById('temp'));

还在上一行和下一行之间放置一个alert("statement reached");来跟踪错误。如果发生错误,则可能无法执行下一行,因此将其用作调试优势。

答案 1 :(得分:0)

之前我尝试过,你不能使用ajax包含文本javascript代码。

如果您真的想这样做,您必须eval() responseText字符串或让javascript根据返回的字符串执行某些操作。

例如

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

你有什么理由不能只包含php文件吗?

<?php
require_once 'googleapi.php';
?>