将变量值从Php传递到Javascript

时间:2012-10-16 03:54:53

标签: php javascript jquery

 <!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Highcharts Example</title>
        <script type="text/javascript" src="js/jquery.min.js"></script>
        <script type="text/javascript">
$(function () {
    var newanswer = <?php echo"$newanswer"; ?>
    var chart;
    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                type: 'column'
            },
            title: {
                text: 'Monthly Progress Reports'
            },
            subtitle: {
                text: 'Source: Sales Department'
            },
            xAxis: {
                categories: [
                    'Jan',
                    'Feb',
                    'Mar',
                    'Apr',
                    'May',
                    'Jun',
                    'Jul',
                    'Aug',
                    'Sep',
                    'Oct',
                    'Nov',
                    'Dec'
                ]
            },
            yAxis: {
                min: 0,
                title: {
                    text: 'Range'
                }
            },
            legend: {
                layout: 'vertical',
                backgroundColor: '#FFFFFF',
                align: 'left',
                verticalAlign: 'top',
                x: 100,
                y: 70,
                floating: true,
                shadow: true
            },
            tooltip: {
                formatter: function() {
                    return ''+
                        this.x +': '+ this.y +' Star';
                }
            },
            plotOptions: {
                column: {
                    pointPadding: 0.2,
                    borderWidth: 0
                }
            },
                series: [{
                name: '5 Star', //Blue
                data: [newanswer, 20, 30, 40, 50, 60, 70, 80, 90, 95, 10, 20]

            }, {
                name: '4 Star', //Red
                 data: [4, 20, 30, 40, 50, 60, 70, 80, 90, 95, 10, 20]

            }, {
                name: '3 Star', // Green
                data: [3, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2]

            }, {
                name: '2 Star', //violet
                data: [2, 33.2, 34.5, 39.7, 52.6, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1]

            }, {
                name: '1 Star', //lightblue
                data: [1, 33.2, 34.5, 39.7, 52.6, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1]

            }]
        });
    });

});
        </script>
    </head>
<body>
<script src="js/highcharts.js"></script>
<script src="js/exporting.js"></script>
<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>

<?php
$newanswer = 50;
?>

</body>
</html>

这可以将php值传递给javascript吗?我需要这样做才能将mysql查询的值放入图形中,图形由java脚本编码。 THX

问题在于这一行

<?php $newanswer = 50; ?>

无法传递此行的值:

 var newanswer = <?php echo"$newanswer"; ?>

这样 50 值不会显示在此行中:

 data: [newanswer, 20, 30, 40, 50, 60, 70, 80, 90, 95, 10, 20]

5 个答案:

答案 0 :(得分:3)

PHP没有JS的概念,所以你可以简单地拥有......

data: [<?php echo $newanswer ?>, 20, 30, 40, 50, 60, 70, 80, 90, 95, 10, 20]

但请注意,直接输出到JS代码块意味着您必须非常小心,不要在JS代码中引入语法错误。一个错误,整个代码块被JS解析器杀死。因此,作为一般规则,您应该始终在PHP中使用json_encode()来确保您生成语法上有效的JS。

即使它只是一个输出的整数,这也适用 - 现在最好进入json编码习惯。它会为你节省很多苦难:

data: [<?php echo json_encode($newanswer) ?>, 20, 30, 40, 50, 60, 70, 80, 90, 95, 10, 20]

因此,即使$ newanswer为null或未定义,你也会得到valis JS。

答案 1 :(得分:2)

这部分代码必须一直向上移动:

<?php
$newanswer = 50;
?>

这一部分:

var newanswer = <?php echo"$newanswer"; ?>

最好改写为:

var newanswer = <?php echo json_encode($newanswer); ?>;

修改

最后一部分写得更好,见Marc B's answer

答案 2 :(得分:0)

将隐藏值放在

之类的表单中
<input type="hidden" name="newanswer" id="newanswer" value="<?=$newanswer; ?>" >

现在使用getElementById,您可以获得$newanswer

的值

答案 3 :(得分:0)

您在代码末尾使用它后定义了PHP变量。只需将定义为,然后再将其传递给JavaScript。

答案 4 :(得分:0)

将值隐藏到隐藏字段

然后转到javascript并添加以下代码

var xi=(document.getElementById("aa")).value;