2012-01-25 12 views
0

私はGoogleビジュアライゼーションを初めて使用しようとしています。私はSmartyを含む既存のMVC構造内で作業しなければならないという事実によって、少し複雑になっていますが、これはby-by-byです。Googleの視覚化 - ChartWrapper - テーブルに列がありません

私はsmartyに渡すデータの正しいセットを取得します。 Smartyのは、その後、Googleの可視化のためのデータをフォーマットし、私は( 'ビューソースのブラウザからのコピー&ペースト)これを取得する:実行時に

<script type="text/javascript" src="https://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
    google.load('visualization', '1'); 
    google.setOnLoadCallback(drawVisualisation); 

    function drawVisualisation() { 
     var wrapper = new google.visualization.ChartWrapper({ 
      chartType: 'ColumnChart', 
      dataTable: [['', 'android', 'iphone', 'unknown'],['2012-01-24', 2, 1, 2],['2012-01-25', 1, 1, 1]], 
      options: {'title': 'Periods'}, 
      containerId: 'access-chart' 
     }); 
     wrapper.draw(); 
    }; 
</script> 

しかし、これは「表にデータがない」ことになります。

本当に変わったのは、生成されたコードをコピーして、渡されたデータから書式設定せずにテンプレートに直接貼り付けると、グラフが正しく表示されるということです。

ここで問題となることは何ですか?どのように修正できますか?

+0

これはうまくいくはずです。これが実行されているときにコンソールを開いている場合は、これが呼び出されない可能性のある他のjsエラーが表示されますか? 「アクセス・チャート」は、あなたのページの要素IDです(drawVisualizationコールバックの前に存在します)。ページのソース全体を貼り付けることはできますか? – oli

+0

他のエラーはありません。「テーブルにはデータがありません」というエラーだけです。 'access-chart'要素が存在し、その中にホワイト・オン・レッドのテキスト「Table has no data」が表示されます。ページ全体が大きすぎます(500行以上のhtml/jsコード) - チャートはほんの一部です。 –

+0

ソース全体を新しいHTMLページに貼り付けて実行すると、グラフが描画されますか?そうでなければ、ページにはそれ以外のものがあります。そうであれば、レンダリングプロセス中に何か起こっている可能性があります。 – oli

答えて

0

どうやら、私はちっちゃな間違いのひとつでキャッチされたようだ。この問題は、非常に迷惑なキャッシングによって引き起こされました。当然のことながら、最初の試みではコードが正しくなかったし、すべてのJS/HTMLが正しくなるまで少し編集が必要だった。しかし、明らかに、javascriptコードはブラウザによってキャッシュされ、HTML(php生成)ページがリロードされたとき、javascriptは不完全なjavascriptになり、したがってチャートが生成されませんでした。キャッシングが解決されると、グラフは期待通りに表示されません。

関連する問題