2013-03-10 43 views
0

這個問題已經在這裏問過幾次了,但不幸的是答案沒有解決我的問題。使用jqplot在Javascript中使用

該網站是目前可見的活在http://www.crosstrendanalysis.co.uk/jqplot_test.php

相關的代碼如下,但是問題的關鍵在於下面的代碼之內;

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

當我使用輸出(通過複製和粘貼)$ outputString而不是使用它創建一個圖形完全正常的PHP的,但是當我嘗試使用PHP這是行不通的。

我想從一個MySql數據庫中獲取數組使用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>";?> 

我一直在掙扎與此相當長的一段時間,所以如果有人能解決這個問題我將非常感激:數組與下面的代碼

$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代碼創建的。

感謝 Maudise

回答

1

當你輸出PHP,它總是一個好主意,用鼠標右鍵單擊瀏覽器和查看源代碼。在這種情況下,你有這樣的事情:

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

這是無效的,你的控制檯應該告訴你關於一個未終止字符串常量。

您應該始終使用json_encode將PHP變量輸出到JavaScript。在這種情況下,你的代碼應該改寫這樣的:

在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); 

然後:

var line1 = <?php echo $outputString; ?>; 
+0

嗨,這太棒了!我已經看到你需要用它來包裝它「但是在這種情況下它不起作用,爲什麼呢?還有這些尺度有點奇怪,是否有一種方法讓volumeofanswers不被放在」「中,因此被採用作爲一個整數? – Maudise 2013-03-10 20:59:05

+1

如果變量是一個字符串,'json_encode'會爲你添加引號,你可以使用'intval'在PHP端修改變量的類型 – 2013-03-10 21:35:38

+0

非常好,謝謝你的幫助!我確信這會是很好用,我可能需要在這裏或那裏調整它,但是你讓我超越了我的絆腳石!謝謝! – Maudise 2013-03-10 21:40:03