谷歌图表:未捕获错误:第0行有1列,但必须有2列

Google Charts: Uncaught Error: Row 0 has 1 columns, but must have 2

本文关键字:1列 2列 0行 错误 谷歌      更新时间:2024-04-20

我有以下javascript代码:

    google.load("visualization", "1", {packages:["corechart"]});
    google.setOnLoadCallback(drawChart);
     function drawChart() {
        var data = google.visualization.arrayToDataTable([
      [' ', 'Systol','Diastol'],
      [' ',  <?php echo "$present_sys" ?>,<?php echo "$present_dia" ?>]
    ]);
    var data2 = google.visualization.arrayToDataTable([
     [' ', 'weight'],
      [' ',  <?php echo "$present_wt" ?>]
    ]);
    var data3 = google.visualization.arrayToDataTable([
    [' ', 'SpO2'],
      [' ',  <?php echo "$pulse_rate" ?>]
    ]);
     var data4 = google.visualization.arrayToDataTable([
      [' ', 'PEF','FEV1'],
      [' ',  <?php echo "$PEF" ?>,<?php echo "$FEV1" ?>]
    ]);

这个问题很奇怪。。发生的情况是,我选择了某些类型的数据,图表确实有效,但我选择了另一条记录,我得到了以下错误:未捕获错误:第0行有1列,但必须有2列。这就是为什么谷歌图表可以使用某些数据,而某些数据则无法使用的原因。

感谢

退出您的输入。使用json_encode对进入JavaScript的变量进行转义,就像使用htmlspecialchars对进入HTML的值进行转义一样。

对于某些值,您的脚本将破坏:

$bar = '"3","4"';
?>
[ '', <?php echo $bar;?> ];
<?php

会给你:

[ '', "3", "4" ] // 3 columns!

如果使用json_encode:

[ '', <?php echo json_encode($bar);?> ];

你会得到:

[ '', "'"3'", '"4'"" ] // 2 columns

此外,这两种说法在功能上是等效的:

echo $bar;
echo "$bar";

echo "$bar"之所以有效,是因为PHP解释字符串并找到匹配的变量。如果不小心使用,这种形式可能非常危险。

此错误可能是由于行尾字符的问题,使PHP和/或arrayToDataTable认为标头下方有空行。在编辑器中检查/修复您的数据文件,该编辑器可以显式显示/转换Unix/Linux风格(LF)、Mac风格(CR)和Windows风格(CR LF)之间的行结尾。当在具有不同行尾类型的系统上创建/编辑数据文件时,可能会出现类似的情况。


来源:我在Excel for Mac上创建了一个CSV文件,收到了同样的错误消息"Row 0 has 1 columns…"(用jquery CSV读取它,并通过arrayToDataTable将其输入google viz)。当我在Excel for Windows中打开该文件时,每隔一行就会显示为空。删除空行并从Excel for Windows中保存解决了此问题。