2014-06-24 63 views
0

我正在製作一個需要使用谷歌圖表的應用程序。 我有這個代碼。如果僅使用變量ab,則一切正常。只要我添加另一個名爲c的變量,它將顯示如下輸出。谷歌圖表似乎沒有工作

enter image description here

爲什麼在這樣的方式顯示? a,b,c的值分別爲8,10,50。

下面的代碼: -

<?php 
include 'dbconnector.php'; 
include 'class/class.user.php'; 
$user = new user(); 
try 
{ 
    $s = $conn->query("SELECT * from messagequeue where indexid=1"); 
    $s->setFetchMode(PDO::FETCH_OBJ); 
    $row = $s->fetch(); 
    $s->closeCursor(); 
    $total = $user->getMaxEmailsFromGridId($row->gridid); 
} 
catch(PDOException $e) 
{ 
    echo $e->getMessage(); 
} 
?> 

<html> 
    <head> 

    </head> 
    <body> 
    <div id="donutchart" style="width: 900px; height: 500px;"></div> 
    <input type="hidden" name="read" id="read" value="<?php echo $row->read; ?>"> 
    <input type="hidden" name="unsubscribed" id="unsubscribed" value="<?php echo $row->unsubscribed; ?>"> 
    <input type="hidden" name="total" id="total" value="<?php echo $total; ?>"> 
    </body> 
</html> 

<script type="text/javascript" src="https://www.google.com/jsapi"></script> 
    <script type="text/javascript"> 
    var a=document.getElementById('read').value; 
    var b=document.getElementById('unsubscribed').value; 
    var c=document.getElementById('total').value; 
    alert(a); 
    alert(b); 
    alert(c); 
     google.load("visualization", "1", {packages:["corechart"]}); 
     google.setOnLoadCallback(drawChart); 
     function drawChart() { 
     var data = google.visualization.arrayToDataTable([ 
      ['Task', 'Hours per Day'], 
      ['A',  a], 
      ['B',  b], 
      ['C', c] 
     ]); 

     var options = { 
      title: 'Mail Activity', 
      pieHole: 0.4, 
     }; 

     var chart = new google.visualization.PieChart(document.getElementById('donutchart')); 
     chart.draw(data, options); 
     } 
    </script> 

任何建議是值得歡迎的。

+0

一個常見問題是您可能有一個廣告攔截器,這會阻止Google的許多組件。值得一試? – Sanchises

+0

否定的。我沒有廣告攔截器。該圖表適用於2個值。第三個值'c'相對大於其他兩個值會導致問題。 – user3605847

回答

1

您需要解析ab,並c作爲數字:

var a = parseFloat(document.getElementById('read').value); 
var b = parseFloat(document.getElementById('unsubscribed').value); 
var c = parseFloat(document.getElementById('total').value); 

您還可以使用parseInt,而不是parseFloat如果你的價值觀被稱爲是整數。

+0

這樣做的魔力。謝謝。 – user3605847