在Javascript甜甜圈图的PHP变量中引用PHP变量
Quoting PHP Variable inside PHP Variable for Javascript Donut Chart
我今天遇到了一点困难,要把一些PHP变量传递给Javascript来制作Donut图。我已经搞了很长一段时间了,还没能弄清楚,我已经查看了这里的帖子以及大量的谷歌搜索,但还没能找到答案。以下是我正在努力实现的目标:
我正试图将数据从MySQL推送到Javascript Donut图表中,以供特定PHP页面的web引用者使用。Javascript图表的语法如下:
<script>
Morris.Donut({
element: 'css div',
data:
[
{ label: '<?php echo($graph["referrer"]); ?>', value: '<?php echo($graph["chart"]); ?>' },
]
});
</script>
$graph['referre']变量保存引用者名称,如"Google.com",$graph['count']变量将引用者名称的相应记录计数保存为数字,如"5"。
以"{label"开头的Javascript行表示Donut图的一部分。最初,从MySQL中提取的数据是用fetchArray()完成的,我想做的是使用PHP foreach语句(例如foreach($Array作为$graph))生成每个"{label"行,这样就可以根据fetchArray()返回的引用者名称的数量动态生成图。我已经尝试了几乎所有我能想到的方法来实现这一点——将整个Javascript行存储在PHP中,然后将其回显到Javascript,等等。但这总是会导致PHP出现内部错误。
我相信答案就在我眼皮底下,谢谢大家抽出时间。
使用json_encode()
生成一个干净的数据对象:
在PHP中:
$data = array( array( 'label' => $graph["referrer"] ), 'value' => $graph["chart"] ) );
在您的JavaScript中;
data: <?php echo json_encode($data); ?>
将php变量数组传递给js脚本的正确方法是使用json
。以下是您需要做的:
php部分:
$sql = 'select * from ....'; // your query
// execute query
// as I don't know what mysql api do you use,
// it's kinda pseudo-code
// but the main idea is to get all rows
// you need in one array `$graphs`
$graphs = array();
while ($graph = fetch_array()) {
$graphs[] = array(
'label' => $graph["referrer"],
'value' => $graph["chart"],
);
}
js部分:
<script>
Morris.Donut({
element: 'css div',
data: <?php echo json_encode($graphs); ?>
});
</script>
您根本没有循环$graph
变量。它只有一个:
<script>
Morris.Donut({
element: 'css div',
data: [{
label: '<?php echo($graph["referrer"]); ?>',
value: '<?php echo($graph["chart"]); ?>'
},]
});
</script>
上面的代码将只呈现一个变量。我相信,你应该在这里有某种循环:
<script>
Morris.Donut({
element: 'css div',
data: [
<?php foreach (/* some loop */) { ?>
{
label: '<?php echo($graph["referrer"]); ?>',
value: '<?php echo($graph["chart"]); ?>'
},
<?php } ?>
]
});
</script>
或者最好的方法是使用数组和json_encode()
来输出JSON。
我的最终解决方案是将字符串连接在一个又大又丑但能工作的glob中。
<script>
Morris.Donut({
element: 'graph div'
data: {
<?php foreach($multidimarray as $graph): ?>
<?php echo htmlspecialchars("{label: "."'".$graph['referrer']."'".", value: "."'".$graph['count']."'"." }, "); ?>
<?php endforeach; ?>
]
});
</script>
返回为:{标签:"Facebook",值:"2"},{label:"Direct",值:"2"},{标签:"Microsoft",值:"1"},{label:"Ask.com",值:"1"},{标签:"Google",值:"1"},
再次感谢大家的帮助,尽管我不理解他们,但我感谢大家的回答。我将标记Gerald的回答,因为他首先做出了回应,首先提到了json_encode,并使我最接近期望的结果。
- 将PHP变量传递给jQuery时遇到问题
- 通过javascript重定向html传递php变量
- 如何在php变量中嵌入JQuery代码
- 在javascript函数中使用php变量
- 将地理编码结果转换为php变量以发布到mysql数据库
- 如何在提交表单时将PHP变量传递到Javascript cookie中
- 从Javascript和Php变量创建Html模板文档
- 如何将php变量作为javascript中列表的元素
- 将PHP变量分配给PHP数组
- 如何在没有ajax的情况下将javascript动态数据发送到php变量
- 在Javascript甜甜圈图的PHP变量中引用PHP变量
- 使用javascript访问php变量
- 在Javascript文件中获取PHP变量
- 如何为Javascript数组()的使用准备PHP变量
- 如何获取PHP变量数据并将其存储在JavaScript变量中
- Javascript变量到PHP变量-如果语句不起作用,则发布
- 通过Javascript验证PHP变量
- 如何将Ajax数据值分配给PHP变量
- 如何在 bootsrap 完整日历中使用 PHP 变量
- 在javascript中调用PHP变量