4

我尝试使用 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>
4

2 回答 2

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>

演示(工作/不工作)。

更新:要使用 PHP 从 MySQL 加载数据,请参阅此示例。但是,正如您自己指出的那样,使用 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 漏洞)。

于 2013-03-02T01:40:40.080 回答
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 库。

于 2013-03-02T01:42:00.267 回答