4

highchartsのWebサイトにある例を使用してみました。しかし、私がそれを使用するとき、私が得ているのは空白の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_encodeXSSの脆弱性を防ぐために、すべてをエスケープする必要があります)。

于 2013-03-02T01:40:40.080 に答える
5

javascriptを含める順序は次のとおりです。

<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 に答える