我有一个网站模板,它使用外部JAVSCRIPT文件在图表上绘制数据。我想要做的是交换PHP变量的演示内容。
原始图表数据
var data = [{
label: "Facebook",
data: [[1, 2], [2, 37], [3, 12], [4, 72], [5, 24], [6, 113], [7, 27]]
},
{
label: "Google+",
data: [[1, 3], [2, 45], [3, 16], [4, 48], [5, 12], [6, 125], [7, 26]]
}];
MY Attempt
var data = [{
label: "Facebook",
data: [[<?php echo '$daysago7'; ?>, 2], [<?php echo '$daysago6'; ?>, 37], [<?php echo '$daysago5'; ?>, 12], [<?php echo '$daysago4'; ?>, 72], [<?php echo '$daysago3'; ?>, 24], [<?php echo '$daysago2'; ?>, 113], [<?php echo '$daysago1'; ?>, 27]]
},
{
label: "Google+",
data: [[<?php echo '$daysago7'; ?>, 3], [<?php echo '$daysago6'; ?>, 45], [<?php echo '$daysago5'; ?>, 16], [<?php echo '$daysago4'; ?>, 48], [<?php echo '$daysago3'; ?>, 12], [<?php echo '$daysago2'; ?>, 125], [<?php echo '$daysago1'; ?>, 26]]
}]
当我包含我的版本时,我根本没有图表。
答案 0 :(得分:1)
例如,您可以使用以下代码创建文件 javascript.php :
<?php header("Content-type: text/javascript");?>
var data = [{
}, { label: "Google+", data: [[ < ?php echo '$daysago7'; ? >, 3], [ < ?php echo '$daysago6'; ? >, 45], [ < ?php echo '$daysago5'; ? >, 16], [ < ?php echo '$daysago4'; ? >, 48], [ < ?php echo '$daysago3'; ? >, 12], [ < ?php echo '$daysago2'; ? >, 125], [ < ?php echo '$daysago1'; ? >, 26]]}]
答案 1 :(得分:1)
好吧,我习惯这样做:
PHP(控制器)
$dataPlot = [
'label' => 'Facebook',
'data' => [...]
];
查看(PHP,Twig,dunno)
<div data-plot="<?php echo json_encode($dataPlot) ?>"></div>
JS(使用jQuery)
$(function() {
$('[data-plot]').each(function(i) {
var div = $(this);
var data = div.data('plot');
div.someJQueryChartPlugin(data);
});
});
<强> CSS 强>
[data-plot] {
...
}
这样您就不需要使用PHP生成JS(并发送正确的标题以使浏览器了解它是什么)并且可以轻松添加大量图表。
答案 2 :(得分:0)
如果你在.js文件中写php,它将无法正常工作。但是你可以做到
<script language="JavaScript" type="text/javascript" src="/some_file.php"></script>
并使.php文件输出javascript。
答案 3 :(得分:0)
只需从代码中删除撇号。
而不是
<?php echo '$daysago7';?>
使用此
<?php echo $daysago7;?>
撇号将$
符号解释为正常符号,而不是php变量。
如果您使用php文件进行javascript,如另一个答案所示,只需在文件的最顶部(在空白之前)添加此标题:
<?php header("Content-type: text/javascript");?>
帮助客户确定其MIME类型。