首页 > 解决方案 > 在 Javascript 中集成 PHP 变量

问题描述

我有这个 Javascript,它输出一个带有一些值的图表:

<script type="text/javascript">
      //pie
      var ctxP = document.getElementById("pieChart").getContext('2d');
      var myPieChart = new Chart(ctxP, {
        type: 'pie',
        data: {
          labels: ["Red", "Blue"],
          datasets: [{
            data: [10, 90],
            backgroundColor: ["#F7464A", "#46BFBD"],
            hoverBackgroundColor: ["#FF5A5E", "#5AD3D1"]
          }]
        },
        options: {
          responsive: true
        }
      });
    </script>

我需要自定义一些值,例如标签数据中的值,这些值来自以前在 PHP 中进行的一些计算。

到目前为止我尝试过的都不成功,可能是因为我错过了一些东西。为了简化我所做的,这里的代码:

//PHP code where I define some variables as strings
<?php
$color1 = "Black";
$color2 = "White";
?>
//Then comes again the Javascript code:
<script type="text/javascript">
  //pie
  var ctxP = document.getElementById("pieChart").getContext('2d');
  var myPieChart = new Chart(ctxP, {
    type: 'pie',
    data: {
      labels: [<?php echo $color1, $color2; ?>], //////////Here my modification
      datasets: [{
        data: [10, 90],
        backgroundColor: ["#F7464A", "#46BFBD"],
        hoverBackgroundColor: ["#FF5A5E", "#5AD3D1"]
      }]
    },
    options: {
      responsive: true
    }
  });
</script>

这不起作用,但我不明白为什么。

我也尝试过:

     <?php
     $colors = array("Black", "White");
     ?>  

传递 $colors 变量,但没有任何变化。

我犯了什么错误?

我怎样才能解决这个问题?

标签: javascriptphp

解决方案


在 php 文件中,可以使用json_encode来完成

<?php
// your php code
?>

<script>
    var jsObject = <?php
    echo json_encode([
        'my_variable1' => 'value1',
        'my_variable2' => 'value2'
    ]);
    ?>
    
    console.log(jsObject);
</script>

推荐阅读