Javascript 错误:给定的行大小不同于5(表中的列数)
很难理解一个基本的东西。你能帮我一下吗 我正试图在谷歌图表中创建一个折线图。出于某种原因,它不允许我使用空值 首先,我通过PHP从Postgres获取数据:Javascript 错误:给定的行大小不同于5(表中的列数),javascript,php,charts,google-visualization,Javascript,Php,Charts,Google Visualization,很难理解一个基本的东西。你能帮我一下吗 我正试图在谷歌图表中创建一个折线图。出于某种原因,它不允许我使用空值 首先,我通过PHP从Postgres获取数据: $rows = pg_fetch_all($fetch); 然后,我尝试绘制图表: <html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script
$rows = pg_fetch_all($fetch);
然后,我尝试绘制图表:
<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {packages: ['corechart', 'line']});
google.charts.setOnLoadCallback(drawBasic);
function drawBasic() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'X');
data.addColumn('number', 'PD1');
data.addColumn('number', 'CD1');
data.addColumn('number', 'PD2');
data.addColumn('number', 'CD2');
data.addRows([<?php
$result = '';
foreach($rows as $data) {
$result .= "['{$data['m']}', {$data['PD1']}, {$data['CD1']}, {$data['PD2']}, {$data['CD2']}],";
}
$result = rtrim($result,',');
echo $result;
?>])
var options = {
hAxis: {
title: 'T'
},
vAxis: {
title: 'C'
},
interpolateNulls: true,
width: 900,
height: 500,
title: 'Blahblah'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="chart_div"></div>
</body>
</html>
当数组中的某个值丢失时会发生这种情况,例如:
data.addRows([['00:00', 85, 88, 6, 10],['00:01', 78, 86, 4, 9],['00:02', 110, 64, 8, 8],['00:03', 105, 82, , 4]])
如果我将查询更改为选择所有值都存在的数据,则显示的图表不会出现任何问题。我认为传递空值是可以的,所以图表的某些部分会有空白点?将空值更改为0不是一个选项,因为结果会产生误导
也许应该以某种特定的方式将null从PHP传递到JS
提前谢谢 这可能是一个愚蠢的建议,但是您可以尝试在元素为null的情况下使用0吗?如果您对数据没有控制权,您可以循环使用它并手动指定=0,其中Null最好在PHP中创建最终的数据数组,然后使用
json\u encode()
将其转换为JavaScript。在折线图中,收到空值时代码通常不会中断。它只是跳过了这个值。我在上使用了相同的代码。它很好用。您还使用了interpolutenulls
,它解决了这个问题。奇怪的是,你仍然在面对它。目前你正在触发谷歌图表中的php代码(这很好),但我建议你在生成图表之前执行该代码,然后只推送值。这是正确的。。。
data.addRows([['00:00', 85, 88, 6, 10],['00:01', 78, 86, 4, 9],['00:02', 110, 64, 8, 8],['00:03', 105, 82, , 4]])