2013-12-17 37 views
1

這裏是我的代碼,我花了幾個小時,谷歌沒有成功搜索這...如何將JSON數據格式化爲使用Google Charts正確顯示?

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

google.setOnLoadCallback(drawVisualization); 

function drawVisualization(){ 
     var jsonData = $.ajax({ 
      url: "FinancialData.php", 
    // data: "ChartRequest=" + "Employees", 
      dataType:"json", 
      async: false, 
      }).responseText; 
      window.alert(jsonData); //this always returns correctly formatted data 

    var data = new google.visualization.DataTable(jsonData); //this never works 


    var chart = new google.visualization.PieChart(document.getElementById('visualization')); 
    chart.draw(data, {title:"Progress Fest Financial Information, Fall 2013"}); 
}; 

代碼返回「表沒有列」

+0

它不相關,但你不應該做'異步:錯誤'。 –

回答

1

responseText是作爲一個字符串的反應,而不是通過JSON解析成Javascript對象。 jQuery將解析的結果傳遞給AJAX完成函數,但是你沒有使用它,所以你不明白。你需要調用$.parseJSON明確:

var jsonData = $.parseJSON($.ajax({ 
    ... 
}).responseText); 

或者你可以使用完成功能(這樣你就不需要使用async: false):

$.ajax({ 
    ... 
}).done(function(jsonData) { 
    window.alert(jsonData); 
    var data = new google.visualization.DataTable(jsonData); 
    var chart = new google.visualization.PieChart(document.getElementById('visualization')); 
    chart.draw(data, {title:"Progress Fest Financial Information, Fall 2013"}); 
}); 
+0

我嘗試了這兩個代碼。沒有錯誤,但仍然顯示「表格沒有列」。它可能與我在.php文件中創建的JSON相關嗎? 「[ { 」員工「: 」安全性「, 」現金「: 」40.00「 }, { 」員工「: 」聲「, 」現金「: 」45.00「 }, { 」員工 「: 」照明「, 」現金「: 」0「} , { 」員工「: 」攝影師「, 」現金「: 」30.00「 } ]」 – user2954658

+0

@user,你檢查關於如何格式化數據表對象的規則?您的輸出看起來不符合[documentation](https://developers.google.com/chart/interactive/docs/reference#DataTable)中所述的格式。 – jmac

相關問題