Я пытаюсь передать 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 на страницу, это работает, но я хочу поместить все настройки во внешний файл.
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"] );
— только потому, что здесь [«bar»] не является допустимым utf8, вся кодировка не удалась: | тупой php.
Других решений пока нет …