2015-02-24 80 views
0

我已經JavaScript代碼如下:谷歌圖表:未捕獲的錯誤:0行有1列,但必須有2

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.是谷歌圖表將與一些數據和一些數據將不會工作的原因工作。

謝謝

回答

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解釋字符串並找到一個匹配的變量。如果偶然使用此表單可能會非常危險。

+0

好吧,會給它一個鏡頭...謝謝.. – 2015-02-24 17:50:58

0

此錯誤可能是由於行結尾字符有問題,使PHP和/或arrayToDataTable認爲標題下有空行。在一個編輯器中檢查/修復數據文件,該編輯器可以在Unix/Linux風格(LF),Mac風格(CR)和Windows風格(CR LF)之間明確顯示/轉換行尾。如果在具有不同行結束類型的系統上創建/編輯數據文件,可能會出現類似情況。


來源:我有同樣的錯誤消息「行0有1列......」與Excel中的Mac(與jQuery的CSV閱讀和飼養到谷歌即通過創建一個CSV文件arrayToDataTable)。當我在Excel for Windows中打開文件時,它顯示每隔一行爲空。刪除空行並從Excel的Excel中保存解決了這個問題。

相關問題