2012-11-16 75 views
4

我已閱讀this後的解決方案,但似乎無法適合我的問題。我正在使用谷歌圖表來構建折線圖。 x軸是日期,y軸是整數。對象沒有方法getColumnType錯誤

當我運行我的代碼,我收到了大量的錯誤信息

對象{「則列出了所有我的JSON格式的數據」}有沒有方法「getColumnType」。

我通過AJAX調用從Web服務獲取JSON圖表數據。我的代碼到目前爲止

<script type="text/javascript"> 

      google.load("visualization", "1", { packages: ["corechart"] }); 
      google.setOnLoadCallback(drawChart); 


      function drawChart() { 
       var jsonData = $.ajax({ 
        url: "WebService.asmx/HelloWorld", 
        data: "{}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        async: false 
       }).responseText; 

       var options = { 
        title: 'Company Performance' 
       }; 

       var chart = new google.visualization.LineChart(document.getElementById('chart_div1')); 
       chart.draw(jsonData, options); 
      } 


    </script> 
+0

'drawChart'在聲明之前使用。這可能不是解決方案,但嘿... – nozzleman

+0

@nozzleman JavaScript將所有函數聲明視爲它們出現在其範圍的頂部。 – Pointy

回答

3

該解決方案很簡單....您不能直接從JSON數據填充谷歌圖表。首先需要將JSON格式化爲數據表。解決方案如下所示:

// Load the Visualization API and the piechart package. 
      google.load('visualization', '1', { 'packages': ['annotatedtimeline'] }); 

      // Set a callback to run when the Google Visualization API is loaded. 
      google.setOnLoadCallback(drawChart); 

      function drawChart() { 
       var jsonData = $.ajax({ 
        url: "JSON.txt", 
        dataType: "json", 
        async: false 
       }).responseText; 

       // HERE IS THE FIX!!! Create our data table out of JSON data loaded from server. 
       var data = new google.visualization.DataTable(jsonData); 

       // Instantiate and draw our chart, passing in some options. 
       var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div1')); 
       chart.draw(data, { width: 400, height: 240 }); 
      } 
0

我想你需要明確解析JSON;在這種情況下,$.ajax()不會爲你做。

嘗試增加:

jsonData = JSON.parse(jsonData); 

你建立圖表之前。

現在,這就是說,我不知道它是什麼,它正在尋找getColumnType()函數;這不會在你的JSON響應中以字符串形式或解析形式存在。

相關問題