2012-02-21 62 views
7

我有一個小舞者應用程序,它提供了一些HTML(包括javascript來調用谷歌圖表API),併爲其他URL查詢數據庫並返回編碼JSON中的數據表單可以傳遞給google.visualization.DataTable。 JavaScript的查詢舞者應用的JSON數據然後將其傳遞到谷歌圖表API - 簡化版本是:將JSON日期發送到Perl的谷歌圖表API

<script type="text/javascript" src="https://www.google.com/jsapi"></script> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script type="text/javascript"> 

     google.load('visualization', '1.0', {'packages':['corechart']}); 
     google.setOnLoadCallback(initialize); 

function initialize() { 
    var res = $.ajax({ 
     url: "/data/2", 
     dataType:"json", 
     async: false, 
     data: "{}", 
     contentType: "application/json", 
     error: function(jqXHR, textStatus, errorThrown) { 
      alert('textStatus ' + textStatus); 
      alert('errorThrown ' + errorThrown); 
     } 
    }); 
    jsonData = res.responseText; 
    var data = new google.visualization.DataTable(jsonData); 

    var chart = new google.visualization.BarChart(document.getElementById('chart_div')); 
    chart.draw(data, {width: 400, height: 240}); 

} 
    </script> 

的問題是,一些由Perl中返回的數據包括日期/時間標記等應有類型設置爲「日期時間」:

{"rows":[{"c":[{"v":"WHAT_CAN_I_PUT_HERE"},{"v":"2095"}]}],"cols":[{"type":"datetime","label":"DTU"},{"type":"number","label":"COUNT"}]} 

在Javascript中,你可以創建一個日期傳遞給谷歌圖表API有:

new Date(2012, 1, 08, 09, 32, 0) 

如何發送日期ENCOD編輯在Perl的JSON,使谷歌圖表API理解它?如果你不能有什麼其他的選擇可以提供給我?

回答

17

JSON不支持datetime作爲數據類型。但根據谷歌的文檔,你可以發送這種格式的字符串:

JSON不支持JavaScript日期值(例如,「new Date(2008,1,28,0,31,26)」 ;但是,API現在支持以下格式的日期的自定義有效JSON表示形式作爲字符串:日期(年,月,日[,小時,分鐘,秒[,毫秒]])一天之後是可選的,月是零基礎

Google Chart Tools Datasource Protocol

+0

謝謝,我會嘗試。 – bohica 2012-04-17 07:32:25

+0

我剛剛做了昨天,我有它的工作;) – benjaoming 2012-04-17 14:21:44

+0

謝謝,這工作,雖然我不能讓它顯示毫秒。 – bohica 2012-04-18 15:01:04

8

只是爲了澄清: 您應該將單元格值寫爲如下所示的字符串:日期(年,月)。 您例如:

{"rows":[{"c":[{"v":"Date(year, month)"},{"v":"2095"}]}],"cols":[{"type":"datetime","label":"DTU"},{"type":"number","label":"COUNT"}]} 

希望幫助和糾正你,因爲我在PHP中使用它,而不是perl的

3

我也陷入了同樣的問題,上述方案沒有奏效。搜索了幾個小時後,我發現後面的文章和解決方案在那裏工作。

https://groups.google.com/forum/#!msg/google-visualization-api/SCDuNjuo7xo/ofAOTVbZg7YJ

不包括在JSON字符串 「新」,所以它僅僅是: 「日期(2012年,1,08,09,32,0)」

+0

你不能說「以上的解決方案沒有工作」。如果你仔細閱讀解決方案,你會發現他們建議輸出「日期(年,月,日)」而不用「新」。那麼這些答案有什麼問題? – 2015-06-04 12:25:19

+0

諷刺的是,儘管@JoséRamón的評論,我錯過了關於省略'new'關鍵字的部分,這就是爲我效力的答案! +1! – 2015-11-28 16:51:49