json - Morris.js setData 不起作用,除非我这样做
问题描述
我正在根据数据库结果绘制数据并通过 ajax 获取数据。该图应该根据使用 jquery setData 的查询重绘。我问过工作中的其他程序员,但仍然无法弄清楚。
php代码
if(isset($_POST['data'])){
$data = $_POST['data'];
$data = json_decode($data);
$query = "SELECT * FROM bad_errors WHERE rel = '$data' LIMIT 20";
$result = $db->query($query);
$chart_data = '';
while($row = mysqli_fetch_array($result))
{
$month = date("M", strtotime($row['date_time']));
$chart_data .= "{ month:'".$month."', website:".$row["rel"].", code:".$row["code"]."}, ";
}
$chart_data = substr($chart_data, 0, -2);
$data = json_encode($chart_data);
echo $data;
}
jQuery代码
let barChart = Morris.Bar({
element : 'chart',
data:[],
xkey:'month',
ykeys:['website', 'code'],
labels:['website', 'code'],
hideHover:'auto',
stacked:true
});
let json = JSON.stringify(rel);
$.ajax({
url: "ajax-php/morris-data.php",
type: "POST",
data: {data: json},
dataType:"json",
success: function (data) {
//data variable only redraws the graph if data looks like this -
data = [
{ month:'Mar', website:38, code:547}, {
month:'Mar', website:38, code:584}, { month:'Mar', website:38,
code:500}, { month:'Mar', website:38, code:564}, { month:'Mar',
website:38, code:500},
]
barChart.setData(data); // but not here via ajax success
},
});
解决方案
我在 php 中处理数据错误
while($row = mysqli_fetch_array($result))
{
$month = date("M", strtotime($row['date_time']));
$data[] = array(
'month' => $month,
'website' => $row['rel'],
'code' => $row['code']
);
}
$data = json_encode($data);
echo $data;
推荐阅读
- elasticsearch - IllegalArgumentException:index.lifecycle.rollover_alias [logstash] 不指向索引
- ringcentral - 需要加数字线
- python - Python - 将 PostgreSQL 查询结果组合成一行
- c++ - C ++:2个函数的重量和平衡问题
- html - 如何使用flexbox在图像右侧将文本分成两个相等的列(而不是行)?
- php - Laravel 7 外键
- sql-server - 触发更新与多个表相关的表中的数据?
- azure - 普鲁米 Azure ARM 模板部署错误
- node.js - 仅显示登录用户的帖子
- flutter - 为什么我在更改应用程序主题时在构建功能中出现错误?