设置Highcharts头标签时无法在JS脚本中获取PHP变量[关闭]

Posted

技术标签:

【中文标题】设置Highcharts头标签时无法在JS脚本中获取PHP变量[关闭]【英文标题】:Can't get PHP variables in the JS script when setting Highcharts head tag [closed] 【发布时间】:2013-02-11 19:32:07 【问题描述】:

下面是我的 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 变量(尽管是静态变量),我错过了什么?

【问题讨论】:

尖叫声掩盖了所有必要的东西? 会发生什么?你有错误吗?它们是什么? 什么视图源显示?为什么json_encode 在整数上? 欢迎来到 Stack Overflow。这不是一个付费支持网站,因此敦促网站常客快速回答不太可能帮助您获得答案。此外,您的问题显示很少的研究工作。您基本上将您的完整应用程序转储在这里,并模糊地描述了它如何无法工作并期望我们猜测。如果您想编写代码,您至少应该能够识别出您的代码的哪一部分没有按预期工作。 为什么要在 3 个地方写 document.write?赋值像 data: ''; 【参考方案1】:

您必须先初始化变量,然后才能在 JavaScript 函数中回显它们。因此,将加载这些变量的 PHP 放在您的 &lt;script&gt;

上方

【讨论】:

我可以将PHP脚本放在html的'head'标签之前吗? 是的,您可以将它放在任何您想要的地方。您应该知道 PHP 是服务器端,并且由于 PHP 是一种编程语言,它从上到下工作。例如 1:echo $string; 2:$string = "Hi"; 不起作用。 1:$string = "Hi"; 2:echo $string; 将输出Hi 我的 javascript 代码中的“document.write(xxx)”怎么样:“系列:[ name: 'salaire moyen', data: document.write(data1);”是否正确?或者调用js变量是否还有其他可能性:data1,data2,data 3? 我不认为document.write 是必要的。我不是很喜欢 JS,所以我不确定。我会说无论是否使用document.write 都可以尝试一下,看看什么效果最好。 按照您的建议,我已将 php 代码(带有变量的初始化)放在 JS 脚本之前,我尝试使用“document.write”=> 调用 JS 变量我的屏幕(它不工作);而且我尝试在没有 document.write 的情况下调用变量:相同的结果:没有任何工作....【参考方案2】:
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/...) 后面的分号

【讨论】:

我可以简单地说:系列:​​[名称:'平均工资',数据:data1,名称:'最高工资',数据:数据2,名称:'最低工资',数据:data3 ] ?

以上是关于设置Highcharts头标签时无法在JS脚本中获取PHP变量[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

HIGHCHARTS:drilldown.js更改饼图标签颜色

Highcharts饼图导出,标签渲染两次

当highcharts导出png文件时,如何将moment.min.js的url设置为本地js文件

关于Highcharts数据量超过1000时无法显示问题

Vue js在编译时正在删除脚本标签

jsp中动态拼接的html标签的id,js中获不取到,是啥原因,怎么解决?