Google Charts:Uncaught Error:第0行有1列,但必须有2列

时间:2015-02-24 17:44:46

标签: javascript

我有以下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. Google图表是否可以使用某些数据,而某些数据无效。

由于

2 个答案:

答案 0 :(得分:0)

逃避您的输入。使用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会解释字符串并找到匹配的变量。如果意外使用,这种形式可能非常危险。

答案 1 :(得分:0)

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

来源:我有相同的错误消息&#34;第0行有1列...&#34;使用在Excel for Mac上创建的CSV文件(使用jquery-csv读取它并通过arrayToDataTable将其输入到谷歌viz)。当我在Excel for Windows中打开文件时,它显示每隔一行为空。删除空行并从Excel for Windows保存修复了该问题。