2012-02-21 11 views
7

私はいくつかのHTML(Google Charts APIを呼び出すためのJavaScriptを含む)を提供する小さなダンサーアプリケーションを持っており、他のURLはデータベースを照会し、フォームをgoogle.visualization.DataTableに渡すことができます。 JavascriptをJSONデータのダンサーアプリはその後、GoogleのチャートAPIに渡し照会 - 簡易版である:PerlからJSON日付をGoogle Charts 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によって返されたデータの一部は、日付/タイムスタンプを含んでいるのでべきであるということです日付を作成することができ、JavaScriptで

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

は、とGoogleのチャートAPIに渡す::タイプは「日時」に設定されている

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

は、どのように私は日付encodを送ることができますJSONのPerlからGoogleのチャートAPIが理解できるように編集しましたか?私には他の選択肢がありません。

答えて

17

JSONはdatetimeをデータ型としてサポートしていません。しかし、Googleのドキュメントによれば、次の形式の文字列を送ることができます:

JSONはJavaScriptの日付値をサポートしていません(たとえば、「new date(2008,1,28,0,31,26)」)。 ; API実装ではサポートされていますが、APIは日付のカスタムJSON表現を次の形式の文字列としてサポートします:Date(年、月、日[、時、分、秒[ミリ秒]一日の後に任意であり、そして数ヶ月はゼロベースされている

Google Chart Tools Datasource Protocol

+0

私がいることをみますありがとう。 – bohica

+0

私はちょうど昨日やった、それは働いていた;) – benjaoming

+0

ありがとう、それは私がミリ秒を表示することができませんでしたが働いた。 – bohica

8

だけ明確にする:。 セルの値は、Date(年、月)のような文字列で記述する必要があります。あなたの例のための :助け

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

希望、と私はPHPでそれを使用していない動作しませんでした私は、同じ問題に実行していた

3

をPerlやソリューション上記てるようあなたのために正しいです。時間を検索した後、私はポストを見つけ、そこの解決策が働いた。

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

それだけになりますので、JSON文字列に "新" を含めないでください: "日付(2012、1、08、09、32、0)"

+0

「上記の解決策が機能しませんでした」とは言えません。ソリューションを慎重に読んだら、「新しい」なしで「日付(年、月、日)」を出力することを提案しています。だから、それらの答えに何が間違っていますか? –

+0

皮肉なことに、@JoséRamónのコメントにもかかわらず、私は 'new'キーワードを省略することに欠けていました。これが私にとってうまくいった答えでした! +1! –

関連する問題