我正在尝试将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设置放在页面中,它可以工作,但我想将所有设置放在外部文件中。
答案 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。