可以';设置Highcharts头标记时,无法在JS脚本中获取PHP变量


Can't get PHP variables in the JS script when setting Highcharts head tag

下面是我的php文件(recherche.php(的摘录,该文件包含HtmlJavascript(JQuery Highcharts(代码并运行MySQL查询。

但是,在head标记中设置JQuery代码时,我无法访问PHP变量。

    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title></title>
    <link href="../css/bootstrap.css" type="text/css" rel="stylesheet" />
    <link href="../css/style.css" type="text/css" rel="stylesheet" />
    <script src="./graphics/js/jquery-1.9.1.js" type="text/javascript"></script>
    <script src="./graphics/js/highcharts.js" type="text/javascript"></script>
    <script type="text/javascript">
        var cat = '<?php echo $categorys; ?>' ; 
        var data1 = '<?php echo $datas; ?>' ;
        var data2 = '<?php echo $datas2; ?>' ;
        var data3 = '<?php echo $datas3; ?>' ;
        var chart;
        $(document).ready(function() { 
            chart1 = new Highcharts.Chart({
                chart: {
                    renderTo: 'containerxx',  
                    type: 'bar'
                    },
                title: {
                    text: 'Average salaries of the sector'
                    },
                xAxis: {
                    categories:  ['Women', 'Men']
                    },
                yAxis: {
                    title: {
                        text: 'Salary'
                        }
                    },
                series: [{
                            name: 'average salary',
                            data: document.write(data1);
                        },  
                        {   
                            name: 'max salary',
                            data: document.write(data2);
                        },
                        {   
                            name: 'min salary',
                            data: document.write(data3); 
                        }]
            });
        });
    </script>

下面,仍然在同一个文件和body标签中,在更多的代码之后,是php变量分配:

    ...
    while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    $category[] = $row[$categorie];
    $data[] = (INT)$row['Salaire_moyen'];
    $data2[] = (INT)$row['Salaire_Max'];
    $data3[] = (INT)$row['Salaire_Min'];
    }
$categorys = json_encode($category); 
echo $categorys ;
echo "<br/><br/>";
$datas = json_encode($data); 
echo $datas ;
echo "<br/><br/>";
$datas2 = json_encode($data2); 
echo $datas2;
echo "<br/><br/>";
$datas3 = json_encode($data3); 
echo $datas3 ;
echo "<br/><br/>";
    ....

这是启动高图图形的命令:

    <div id="containerxx" style="width:100%; height:400px; margin:0 auto"></div>

但遗憾的是,屏幕上没有显示任何图表。

但是,当我在同一个php文件中对静态值进行同样的处理时,它会起作用,我可以在网页中获得高图图形。

例如,当我在同一个文件中写下面的脚本而不是上面的脚本时,它就起作用了,并且图形显示在我的页面上:

    <script type="text/javascript">
        var chart;
        $(document).ready(function() { 

            chart1 = new Highcharts.Chart({
                chart: {
                    renderTo: 'containerxx',  
                    type: 'bar'
                    },
                title: {
                    text: 'Salaire moyen des métiers de l''informatique'
                    },
                xAxis: {
                    categories:  ['Architecte logiciel', 'Développeur logiciel', 'Infogérance']
                    },
                yAxis: {
                    title: {
                        text: 'Salaire moyen'
                        }
                    },

                series: [{
                            name: 'Femmes',
                            data: [60000, 45000, 25000]
                        },  
                        {   
                            name: 'Hommes',
                            data: [75000, 48000, 27500]
                        }]
            });

        });
    </script>

让我的图形动态地使用PHP变量而不使用静态变量,我错过了什么?

在JavaScript函数中回显变量之前,必须先初始化变量。因此,将加载这些变量的PHP放置在<script> 之上

series: [{
          name: 'average salary',
          data: document.write(data1)
         },  
         {   
          name: 'max salary',
          data: document.write(data2)
         },
         {   
          name: 'min salary',
          data: document.write(data3)
         }]

document.write(data1/2/3/...) 后的额外分号