Highcharts不显示任何空白的html页面

时间:2013-03-02 01:31:53

标签: php javascript jquery html highcharts

我尝试使用highcharts网站中给出的示例。但是,当我使用它时,我得到的是一个空白的html页面。有人请帮我解释一下代码。我不明白为什么代码没有正确加载请告诉我是否应该添加额外的东西,并请让我知道如何使用PHP数组使这个图也工作

<html>
<head>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"       type="text/javascript"></script> 
<script>
$(function () {
  var chart;
  $(document).ready(function() {
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container',
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        title: {
            text: 'Browser market shares at a specific website, 2010'
        },
        tooltip: {
            pointFormat: '{series.name}: <b>{point.percentage}%</b>',
            percentageDecimals: 1
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                dataLabels: {
                    enabled: true,
                    color: '#000000',
                    connectorColor: '#000000',
                    formatter: function() {
                        return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
                    }
                }
            }
        },
        series: [{
            type: 'pie',
            name: 'Browser share',
            data: [
                ['Firefox',   45.0],
                ['IE',       26.8],
                {
                    name: 'Chrome',
                    y: 12.8,
                    sliced: true,
                    selected: true
                },
                ['Safari',    8.5],
                ['Opera',     6.2],
                ['Others',   0.7]
            ]
        }]
    });
});

});
</script>
</head>
<body>

<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>
 </body>
</html>

2 个答案:

答案 0 :(得分:10)

我相信您的问题符合您添加脚本的顺序。尝试先放置jQuery:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"       type="text/javascript"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>

演示(working / not working)。

更新:使用PHP从MySQL加载数据,请参阅this example。但是,正如您自己指出的那样,使用JSON对其进行编码可能是更好的选择:

$data = array();

while($row = mysql_fetch_array($results)) {
    $data[] = array($row[1], $row[0]);
}
echo json_encode($data);

这最后一个echo可用于使用ajax返回整个数组(如上面的链接示例),或者在生成页面本身时(即在脚本中“硬编码”):

    series: [{
        type: 'pie',
        name: 'Browser share',
        data: <?php echo json_encode($data)?> 
    }]

这将有效,因为当JSON编码时,您的数组可用于代替JavaScript文字(而json_encode应该负责逃避所有内容,防止XSS漏洞。)

答案 1 :(得分:5)

包含javascripts的顺序应为:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"       type="text/javascript"></script> 
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>

我的意思是,你必须先在任何其他脚本之前包含jQuery库。