javascript - 尝试将 php 变量传递给 js

标签 javascript php loops

我有一个 $attr 数组,其中包含帖子中每个图表(highcharts)的 id 和页脚标题。当我 print_r 数组时,它会正确地将 id 和 footer_caption 分组,并按照帖子中的正确顺序进行分组。例如,在我当前工作的帖子中,我有 3 个图表,这就是 $attr 中的内容:

    Array
(
    [chart] => 23
    [footer_caption] => footer test
)

    Array
(
    [chart] => 22
    [footer_caption] => another test
)

    Array
(
    [chart] => 24
    [footer_caption] => And another test
)

我将 $attr['footer_caption] 传递给 JavaScript,如下所示:

<script>
  var captionLabel = "<?php echo $attr['footer_caption']; ?>";
  console.log(captionLabel);
</script>

并且工作正常。然后,当我在 js 文件上使用 captionLabel 时,就会出现问题。我尝试使用 for 循环但没有成功。如果我在 js 文件中使用 console.log captionLabel ,它会显示最后一个图表的页脚标题 3 次。这是我使用 captionLabel 的 highcharts.js:

Highcharts.setOptions({
  credits: {
          enabled: false
  },
  chart: {
          type: 'column',
          events: {
              load: function () {
                var label = this.renderer.label(captionLabel)
                  .css({
                      width: '400px',
                      fontSize: '9px'
                  })
                  .attr({
                      'r': 2,
                      'padding': 5
                  })
                  .add();

                  label.align(Highcharts.extend(label.getBBox(), {
                      align: 'center',
                      x: 0, // offset
                      verticalAlign: 'bottom',
                      y: 20 // offset
                  }), null, 'spacingBox');

              }
          },
          marginBottom: 120
      },
      legend: {
        align: 'center',
        verticalAlign: 'bottom',
        y: -30
    },

我的问题是如何将正确的 footer_caption 字符串传递给这个 js 中的每个图表?因为现在每个页脚标签都在获取最后一个值。这篇文章中所有 3 个图表都带有页脚标题“还有另一个测试”。

最佳答案

使用json_encode()

<?php
$labels = [
[
    ['chart'] => 23,
    ['footer_caption'] => 'footer test 1'
],[
    ['chart'] => 24,
    ['footer_caption'] => 'footer test 2'
],[
    ['chart'] => 25,
    ['footer_caption'] => 'footer test 3 '
]
];
?>
<script>
  var captionLabels = "<?php echo json_encode($labels); ?>";
  console.log(captionLabels);
  var label;
  //access each one like this
  captionLabels.forEach(function(label) {
     label = this.renderer.label(label.footer_caption);
     //graph code.
  });
</script>

关于javascript - 尝试将 php 变量传递给 js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43676875/

相关文章:

javascript - 删除显示 : none when changing between @media sizes

javascript - 自定义 jquery 验证和不显眼的 JavaScript

php - 是否可以在不使用 where 子句的情况下从 2 个表中进行选择?

java - 如何在java中读取循环内带有空格的字符串?

java - 在java中哪个循环最适合迭代集合

javascript - 在主横幅上透明的粘性标题?

javascript - 将 Wolfram 语言编写的 3D Rose 移植到 JavaScript 中

PHP 查找相关性

php - 如何使输入框接受格式为 dd/MM/yyyy 的日期?

loops - 如何在jmeter内部正确设置循环内循环的计数器?