2013-08-05 206 views
0

服務器發回的數據是這樣的:加載JavaScript Highcharts系列數據問題

{"barData": 
    [ 
     {"Accepted":[0,0,0]}, 
     {"Rejected":[0,0,0]}, 
     {"In_Process":[0,1,0]}] 
} 

在瀏覽器中,它顯示爲這樣:

enter image description here

我可能(而且很有可能)不正確的信念是,這是填充Highcharts堆疊條形圖的正確結構,如下所示:

Example Stacked Bar in jsFiddle

文檔中的例子表明,出現這樣一個固定的數據集:

series: [{ 
      name: 'John', 
      data: [5, 3, 4, 7, 2] 
     }, { 
      name: 'Jane', 
      data: [2, 2, 3, 2, 1] 
     }, { 
      name: 'Joe', 
      data: [3, 4, 4, 2, 5] 
     }] 

這是我試圖效仿。所以,最後,我得到一個零圖。我的Javascript看起來像這樣:

$.ajax({ 
url : 'http://localhost:8080/afta/report/transfersbynetwork', 
success : function(point) { 
    data = []; 
    $.each(point.barData, function(itemNo, item) { 
     data.push([ item[0], parseInt(item[1][0]), parseInt(item[1][1]), parseInt(item[1][2])]); 
    }); 
    barchart = new Highcharts.Chart(baroptions); 
    baroptions.series[0].data = data; 
}, 
cache : false 
}); 

那麼我在哪裏骨頭呢?我沒有得到任何陰謀,我確信這個問題要麼是來自服務器的數據(可能),要麼是解析數據結構並加載系列的javascript(很可能)。

任何有識之士將不勝感激。

回答

1

根據您的結構,你需要改變你的函數來處理數據:

$(function() { 
    var point = { 
     "barData": [{ 
      "Accepted": [1, 2, 3] 
     }, { 
      "Rejected": [3, 4, 5] 
     }, { 
      "In_Process": [0, 1, 0] 
     }] 
    }, 
    data = []; 

    $.each(point.barData, function (itemNo, item) { 
     for (var prop in item) { 
      data.push({ 
       name: prop, 
       data: [parseInt(item[prop][0]), parseInt(item[prop][1]), parseInt(item[prop][2])] 
      }); 
     } 
    }); 
    $('#container').highcharts({ 
     chart: { 
      type: 'bar' 
     }, 
     title: { 
      text: 'Stacked bar chart' 
     }, 
     xAxis: { 
      categories: ['Apples', 'Oranges', 'Pears'] 
     }, 
     yAxis: { 
      min: 0, 
      title: { 
       text: 'Total fruit consumption' 
      } 
     }, 
     legend: { 
      backgroundColor: '#FFFFFF', 
      reversed: true 
     }, 
     plotOptions: { 
      series: { 
       stacking: 'normal' 
      } 
     }, 
     series: data 
    }); 
}); 

http://jsfiddle.net/9jVJb/

+0

我看到你的jsfiddle鏈接,但我仍然在它是如何工作的模糊。你的容器div有一個「highcharts」方法來調用?當試圖整合你建議的功能改變時,我會在這一行上發現錯誤。 – Raevik

+0

Uncaught TypeError:Object [object Object]在我的div上調用'.highcharts'時沒有方法'highcharts',就像你在'#container'上做的那樣。即使演示以這種方式調用...所以我假設我正在做一些愚蠢的事情。我會繼續搜索。 – Raevik

+0

你有jquery.js和highcharts.js嗎?你使用什麼版本的高拓撲圖? jquery插件添加了3. –