2016-03-30 40 views
0

我有一個希望得到幫助的問題。我已經閱讀了一些教程和幾個關於這裏的問題,但似乎沒有人回答我的問題。我在做一個Ajax請求其用JSON響應這樣的事情,例如(控制檯登錄輸出)回來我的PHP文件:使用Chart.js將JSON數據繪製到圖表上

{ Email addresses: 4, IP addresses: 2, Names: 1 } 

我希望能夠藉此與繪製它到使用Chart.js的圖表,但我已經嘗試過:

$.each(res, function(i, item) { 
    data = { 
     label: i, 
     value: item 
    } 
} 
var myDoughnutChart = new Chart(ctx).Pie(data); 

問題是它只填充一個顏色和一個標籤與一個值。有沒有什麼辦法可以改變JSON輸出的格式,以便它可能是:

{ "Label":"Email addresses","Value":"4" } 

的改變將不得不使用Javascript/JQuery的進行。我必須指出的標籤並不總是有時JSON輸出可能會有所不同,如相同:

{ Usernames: 3, Passwords: 3, Names: 1 } 

再上面是輸出到控制檯時只什麼我得到。

我該如何去圖表這可能使用$ .each()在JQuery或其他?任何幫助將不勝感激,對這個問題的長度抱歉。

+0

您可以在循環的每次迭代中覆蓋'data'。試試'data.push({label:i,value:item});'代替。首先確保'data'是一個數組。 – Daedalus

回答

2

當您使其與當前項目相等時,您將始終覆蓋data,並且將等於循環後的最後一個元素。您需要爲其添加元素,因此圖表中會包含更多元素。

$.each(res, function(i, item) { 
    if (!Array.isArray(data)) { 
     data = []; 
    } 
    data.push({ 
     label: i, 
     value: item 
    }); 
} 
var myDoughnutChart = new Chart(ctx).Pie(data); 
+1

謝謝你們,這對我很好。我很感激幫助。 – Dave

+1

不客氣,歡呼聲 –

0

它很容易

去chart.js之腳本,並與電子郵件地址和IP地址替換標籤和值.. 最初它被接受標籤和值以及一些可選的屬性,如顏色和所有。 ..

希望它可以幫助