我有以下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图表是否可以使用某些数据,而某些数据无效。
由于
答案 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保存修复了该问题。