0

サーバーは、jQuery の min ファイルを操作しようとしていることに不満を感じているようです。報告されているエラーは次のとおりです。

GET http://mywebsite.com/tmp/highchart_C6MyqK 403 (Forbidden) 
                                                              jquery.min.js:2

highchart_C6MyqK は、以下のコードからランダムな名前で作成される json ファイルです。私の最終的な目標は、この Highstock チャートを作成することです。

http://www.highcharts.com/stock/demo/compare

ただし、ページをロードすると、禁止されたエラーで空白のままになります。2 つの異なるサーバー ホストでこのコードを試しましたが、同じエラーが発生しました。


これが私のコードです。前半はデータの取得、後半はグラフの作成です。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js">
</script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script src="http://code.highcharts.com/stock/highstock.js"></script>
<script src="http://code.highcharts.com/stock/modules/exporting.js"></script>

<?php
//Find all .csv files
$files = glob('*.csv');
$dates = array();
for($i=0;$i<count($files);$i++){
    $str = substr($files[$i],-14, -4);
    $dates[] = $str;
}
sort($dates);

//Get data from csv files
$tmpFile = tempnam('tmp/','highchart_');
$out = fopen($tmpFile, "w");
fputs($out, '[');
for($i=0;$i<count($files);$i++){
    if (($handle = fopen($files[$i], "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
            $timestamp = strtotime($data[0].' '.$data[1]);
            fputs($out, '['.(int)$timestamp.','.(float)$data[2].','.
            (float)$data[3].','.(float)$data[4].','.(float)$data[5].','.
            (float)$data[12].','.(float)$data[13].']');
        }
        fclose($handle);
    }
}
fputs($out, ']');
fclose($out);
?>

<script type="text/javascript">
$(function() {
var seriesOptions = [],
    yAxisOptions = [],
    seriesCounter = 0,
    names = ['CBS min', 'CBS max', 'CBS avg. peak min', 'CBS avg. peak max', 'LKFS', 'LRA' ],
    colors = Highcharts.getOptions().colors;

$.each(names, function(i, name) {

    $.getJSON('<? echo $tmpFile ?>',    function(data) {

        seriesOptions[i] = {
            name: name,
            data: data
        };

        seriesCounter++;

        if (seriesCounter == names.length) {
            createChart();
        }
    });
});



// create the chart when all data is loaded
function createChart() {

    $('#container').highcharts('StockChart', {
        chart: {
        },

        rangeSelector: {
            selected: 4
        },

        yAxis: {
            labels: {
                formatter: function() {
                    return (this.value > 0 ? '+' : '') + this.value + '%';
                }
            },
            plotLines: [{
                value: 0,
                width: 2,
                color: 'silver'
            }]
        },
        
        plotOptions: {
            series: {
                compare: 'percent'
            }
        },
        
        tooltip: {
            pointFormat: '<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b> ({point.change}%)<br/>',
            valueDecimals: 2
        },
        
        series: seriesOptions
    });
}

});
</script>

<div id="container" style="height: 500px; min-width: 600px"></div>

あなたの洞察を前もってありがとう!

4

1 に答える 1

2

この問題は、作成した JSON ファイルのアクセス許可に関連している可能性があります。読み取り権限があるかどうかを確認します (ファイルの所有者だけでなく、すべてのユーザーに対して)。

そうでない場合 (おそらくそうです)、これを、ファイルを作成する PHP 関数の末尾の の下に配置しますfclose($out)

chmod($tmpFile, 0644); # Read/write for file owner, read for everyone else

JavaScript はサーバー側ではなくクライアント側で実行されるため、誰でも読めるようにする必要があります。

于 2013-05-28T09:02:17.037 に答える