如何将变量从PHP传递到外部JS文件?

时间:2014-10-11 13:41:25

标签: javascript php jquery flot

我正在尝试将2个变量(包含图表数据)传递给外部JS文件(其中包含图表的设置)。

在PHP中我有:

<script type='text/javascript'>
var  final_values = '$final_values';
var  final_names = '$final_names';
</script>

和外部JS的一部分:

var rawData = "["+final_values+"]";
var ticks = "["+final_names+"]";
var plot = $.plot('#placeholder', [
    { data: rawData ,color: 'rgb(50,179,234)'}
  ], {
    series: {
      bars: {
        show: true, align: 'center', barWidth:0.7
      }
    },
    bars: {
      align: 'center',
      barWidth: 0.3,
      horizontal: true,
      fillColor: { colors: [{ opacity: 0.4 }, { opacity: 1}] },
      lineWidth: 1
    },
    grid: {
      backgroundColor: 'transparent',
      hoverable: true,
      clickable: true
    },
    xaxis: {
      autoscaleMargin: 0.1,
      tickColor: '#5E5E5E',                       
      color:'black',
      ticks: 5
    },
    yaxis: {
      position: 'left',
      ticks: ticks,
      tickSize: 1,
      color:'black'
    }
  });

不起作用的示例:

final_values = '[209,0],[570,1],[1359,2],[2692,3]';
final_names = '[0,"TheDude"],[1,"nikodemus"],[2,"adrianp55"],[3,"Richard Nasta"]';

如果我将所有JS设置放在页面中,它可以工作,但我想将所有设置放在外部文件中。

1 个答案:

答案 0 :(得分:0)

json_encode。

var  final_values = <?php json_encode($final_values);?>;
var  final_names = <?php json_encode($final_names);?>;
但是,与大多数PHP不同,json_encode不是二进制安全的(这不是我为什么,它不是JSON afaik的限制),因此请确保您在任何编码时都只有utf8安全字符,例如,这不会起作用:

json_encode(["foo"=>1,"bar"=>"\x00\xFF"] );

- 只是因为[&#34; bar&#34;]这里的utf8无效,整个编码失败了:愚蠢的php。