2012-01-25 112 views
0

我嘗試使用谷歌可視化(首次 - 所以,請多多包涵)來構建一個簡單的柱形圖。由於我必須在包括Smarty在內的現有MVC結構中工作,所以事情變得更加複雜 - 但是這是一條路。谷歌可視化 - ChartWrapper - 表沒有列

在PHP中,我得到了正確的一組數據,這是我傳遞給智者的。 Smarty的格式,然後對谷歌的可視化數據,所以我得到這個(從瀏覽器中複製 - 粘貼「查看源文件」):

<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錯誤? 'access-chart'絕對是您的頁面上的一個元素ID,它在drawVisualization回調_之前存在_?你能粘貼頁面的整個來源嗎? – oli

+0

沒有其他錯誤 - 只有「表沒有數據」一個。 'accesss-chart'元素存在,我得到一個白色的紅色文本「表中沒有數據」。整個頁面太大(超過500行html/js代碼) - 圖表只是其中的一小部分。 –

+0

如果您將整個源代碼複製粘貼到新的html頁面並運行它,那麼該圖表是否會繪製?如果沒有,那麼頁面中還有其他東西會與之混淆。如果是這樣,那麼在渲染過程中可能會發生一些事情。 – oli

回答

0

顯然,我被最愚蠢的錯誤之一抓了出來。問題是由一些非常不需要的緩存引起的。很自然,我在第一次嘗試時沒有得到正確的代碼,並且直到所有JS/HTML都正確,我花了一些編輯。然而,很明顯,javascript代碼被瀏覽器緩存,並且當重新加載HTML(php生成的)頁面時,javascript不是 - 導致JavaScript不完整,因此沒有圖表。緩存解決後,圖表不會按預期顯示。