我在PHP中使用chart.js创建一个图表,如下所示:
$chart = <<<ECHO
<script type="text/javascript">
var ctx = document.getElementById("myChart").getContext("2d");
Chart.types.Bar.extend({
name: "myChart",
initialize: function () {
Chart.types.Bar.prototype.initialize.apply(this, arguments);
}
});
new Chart(ctx).myChart(data, {
scaleLabel : "<%= value + ' $' %>"
});
</script>
ECHO;
echo $chart;
如果我在Javascript中运行它,这段代码工作正常,但不幸的是我需要通过PHP(我在CMS中使用一个组件)显示它不起作用。我收到以下错误:
Parse error: syntax error, unexpected '=', expecting '}' in process.php(1227) : eval()'d code on line 154
我将错误缩小到initialize: function() {...}
代码行。但是为什么它会在PHP回声中引起问题?
答案 0 :(得分:1)
我不确定你为什么会遇到问题,我认为你不应该这样。
但是我有一个更好的答案,使用缓冲区代替heredocs(无论如何它们更容易使用)
Google ob_start
了解它是如何运作的,它们非常有用
ob_start()?>
<script type="text/javascript">
var ctx = document.getElementById("myChart").getContext("2d");
Chart.types.Bar.extend({
name: "myChart",
initialize: function () {
Chart.types.Bar.prototype.initialize.apply(this, arguments);
}
});
new Chart(ctx).myChart(data, {
scaleLabel : "<%= value + ' $' %>"
});
</script>
<?php $chart = ob_get_clean();
echo $chart;