0

这个问题已经在这里问过几次了,但不幸的是,答案并不能解决我的问题。

该网站目前可在http://www.crosstrendanalysis.co.uk/jqplot_test.php实时查看

相关代码在下面,但问题的症结在于下面的代码;

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

当我使用 $outputString 的输出(通过复制和粘贴)而不是使用 php 时,它可以完美地创建一个图形,但是当我尝试使用 php 时它不起作用。

我正在尝试将 JQPlot 与从 MySql 数据库获得的数组一起使用。使用以下代码创建数组

$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>";?>

我已经为此苦苦挣扎了很长一段时间,所以如果有人能解决这个问题,我将不胜感激。

谢谢莫迪丝

4

1 回答 1

1

当您输出 PHP 时,最好右键单击浏览器并查看源代码。在这种情况下,你有这样的事情:

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

这是无效的,您的控制台应该告诉您未终止的​​字符串常量。

您应该始终使用json_encode将 PHP 变量输出到 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 回答