如何将PHP的while循环中的变量传递给JavaScript?

时间:2016-06-01 09:26:31

标签: javascript php mysql

我使用Google API创建一个Graph图表我使用了Google的Java Script源代码。在PHP中,我使用while循环,我使用查询获取一些数组行,这个mysql查询工作正常,并且fetched数组的值也正确(当我在PHP中回应时)但问题是如何通过这个JavaScripts函数的值? 我的PHP代码如下:

while ($graph_result = mysqli_fetch_row($graph)) 
{
    $graphCount = $graph_result[0];
    $graphMonth = $graph_result[1];
    echo $graphCount; // This works
    echo $graphMonth;
}

这给了我两行的结果,每行包含下面列出的两个值:

enter image description here

现在我想将上面的值传递给Java脚本函数,以便它为我绘制Graph图表,我的javascript代码如下:

function drawChart() {
    var data = google.visualization.arrayToDataTable([
        ['Months', 'users'],
        [graphMonth, graphCount]  // Here I have to place PHP values !
    ]); 
}

那么如何将这些值传递给JS ???

3 个答案:

答案 0 :(得分:1)

尝试以下代码,

在PHP中

$i = 0;
while ($graph_result = mysqli_fetch_row($graph)) 
{
    $graph_values[$i]["count"] = $graph_result[0];
    $graph_values[$i]["month"] = $graph_result[1];
    $i++;
}

在剧本中,

<script>
    <?php foreach($graph_values as $key){ ?>
    drawChart('<?php echo $key["count"]; ?>', '<?php echo $key["month"]; ?>');
    <?php } ?>

function drawChart(graphCount, graphMonth) {
    var data = google.visualization.arrayToDataTable([
        ['Months', 'users'],
        [graphMonth, graphCount] 
    ]); 
}
</script>

答案 1 :(得分:1)

<?php while ($graph_result = mysqli_fetch_row($graph)) 
{
   ?>
<script>
function drawChart() {
    var data = google.visualization.arrayToDataTable([
        ['Months', 'users'],
        [<?php echo $graph_result[0]; ?>, <?php echo $graph_result[1]; ?>]
    ]); 
}
</script>
<?php
}
?>

我不知道这是不是最好的做法..

答案 2 :(得分:0)

你可以用json来做到这一点 在while循环中,构建一个关联数组并在json中对其进行编码:

$jsonArray = array();
while ($graph_result = mysqli_fetch_row($graph)) 
{
    $graphCount = $graph_result[0];
    $graphMonth = $graph_result[1];
    $jsonArray[] = array($graphCount, $graphMonth);
}
echo '<div id="json">' . json_encode($jsonArray) . '</div>';

然后在你的javascript中恢复它:

var json_data = JSON.parse(document.getElementById('json').innerHTML);
function drawChart(json_data) {
    var data = google.visualization.DataTable();
    data.addColumn('number','Months');
    data.addColumn('number','users');
    data.addRows(json_data);
}