在Javascript中集成PHP变量

在Javascript中集成PHP变量,javascript,php,Javascript,Php,我有一个Javascript,它输出一个带有一些值的图表: <script type="text/javascript"> //pie var ctxP = document.getElementById("pieChart").getContext('2d'); var myPieChart = new Chart(ctxP, { type: 'pie', data: {

我有一个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变量,但没有任何更改

我犯了什么样的错误


如何修复此问题?

在php文件中,可以使用json_encode完成此操作


您可以这样做:labels:JSON.parseThank!成功了!不客气!我对整数也做了同样的处理,但不起作用。程序是一样的吗?再次感谢!为了澄清php变量$colors实际上是一个数组!是的,如果$colors变量是一个有效数组,它应该像一个符咒一样工作!它不会那样工作的。jsObject将返回一个未解析的json字符串。您应该像这样解析它:JSON.parsejsObject。此外,您还必须使用@AdnaneAr来包装它,它将起作用。看起来你还没有完全按照写的那样试过。Php的json_encode确实返回一个字符串值,但随后它被直接注入html而不带任何引号,因此您得到的基本上是var jsObject={…content go here},因此不应该对其进行解析。至于带引号的变体,那么应该解析它,是吗
<?php
// your php code
?>

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