0

この質問はすでにここで数回尋ねられていますが、残念ながら答えは私の問題を解決しません。

このウェブサイトは現在、 http: //www.crosstrendanalysis.co.uk/jqplot_test.phpでライブで閲覧できます。

関連するコードは以下のとおりですが、問題の核心は以下のコード内にあります。

var line1 = "<?php echo $outputString; ?>";

phpを使用する代わりに$outputStringの出力を(コピーアンドペーストで)使用すると、完全に正常なグラフが作成されますが、phpを使用しようとすると機能しません。

MySqlデータベースから取得した配列でJQPlotを使用しようとしています。配列は次のコードで作成されます

$weeknumbers = array();
$completedquestionnaires = array();

$output = array();
while($row=mysqli_fetch_assoc($resultQuestionnaireCount)){
//  $completedquestionnaires[] = $row['VolumeOfAnswers'];
//  $weeknumbers[] = $row['WeekNumber'];
$temp1 = array();
$temp2 = array();
$temp1[] = "".$row['WeekNumber']."";
$temp2[] = "".$row['VolumeOfAnswers']."";

$output[] = '[' . json_encode(implode(", ", $temp1)) . ', ' . implode(", ", $temp2) . ']';
//$output[] = $temp1;
}
//$outputTemp = implode(',\n',$output);
$outputString = '['.print_r(implode(",\n",$output),1).']';
$output = json_encode($output);

JQPlotコードは次のとおりです。

<script type="text/javascript">
$(document).ready(function(){
    var line1 = "<?php echo $outputString; ?>";
  var plot1 = $.jqplot('chart1', [line1], {
    title: 'Volume of questionnaires completed',
    series:[{renderer:$.jqplot.BarRenderer}],
    axesDefaults: {
        tickRenderer: $.jqplot.CanvasAxisTickRenderer ,
        tickOptions: {
          angle: -30,
          fontSize: '10pt'
        }
    },
    axes: {
      xaxis: {
        renderer: $.jqplot.CategoryAxisRenderer
      }
    }
  });
});
</script>

<div id="chart1" style="height:300px; width:500px;"></div>
<?php echo "<h3>";
echo  $output;
    echo "<br>";
    echo $outputString;
    echo "</h3>";?>

私はかなり長い間これに苦労してきたので、誰かがこれを修正することができれば私は非常に感謝するでしょう。

ありがとうMaudise

4

1 に答える 1

1

PHP を出力するときは、ブラウザーを右クリックしてソースを表示することをお勧めします。この場合、次のようなものがあります。

var line1 = "[.....],
[.....],
[.....]";

これは無効であり、コンソールは未終了の文字列定数について通知する必要があります。

json_encodePHP 変数を JavaScript に出力するには、常に を使用する必要があります。この場合、コードを次のように書き直す必要があります。

$weeknumbers = array();
$completedquestionnaires = array();

$output = array();
while($row=mysqli_fetch_assoc($resultQuestionnaireCount)){
    $temp1[] = "".$row['WeekNumber']."";
    $temp2[] = "".$row['VolumeOfAnswers']."";

    $output[] = array($row['WeekNumber'], $row['VolumeOfAnswers']);
}
$outputString = json_encode($output);

次に、JavaScript で:

var line1 = <?php echo $outputString; ?>;
于 2013-03-10T20:36:16.083 に答える