2016-08-02 123 views
0

我想要從數據庫中動態創建的圖表中存儲highcharts數據,並將該數據重新放入highcharts。要存儲在數據庫中的數據創建一個像這樣的字符串:動態填充的highcharts數據和數據庫存儲

var chartPoints = ""; 

var series = chart.series; 

for(var i = 0; i < series.length; i++) { 
    var numberOfPoints = series[i].data.length;  //Get number of points 

    for(var n = 0, length = numberOfPoints; n < length; n++) { 
     chartPoints += '[' + series[i].points[n].x + ',' + series[i].points[n].y + '],'; 

    } 
    chartPoints += '/,'; 
} 

這就造成這樣的「[1470009600000,0]一個字符串,[1471219200000,0]/[1470009600000,-1],[ 1471219200000,-1],/,「x值是日期。這是系列之間帶有「/」的2個系列。 2系列每個都有2個數據點。所有的數據點都有一個x和一個y值。這只是點數和系列數量較少的一個例子,爲了使其工作。

問題是,我不知道我應該如何將這個字符串中的值推回到highcharts。我知道我可以動態地添加系列highcharts這樣的:

chart.addSeries({       
    name: "Test", 
    data: [ 
      [x, y], 
      [x, y] 
     ] 
}); 

但我不知道該怎麼做,與這樣的字符串。我試圖在字符串之外創建一個具有多個維度的數組,以便通過一些循環來從這些數據中提取值,但是我無法做到。做這個的最好方式是什麼?

+0

爲什麼將斜槓和數據作爲字符串而不是本機JSON返回? –

+0

告訴我你將如何完成它 – Koiski

+0

你可以使用一些基本的js函數來解析你的數據,但事實是它不是Highcharts的最佳格式,就像塞巴斯蒂安提到使用JSON而不是字符串會好得多。 http://jsfiddle.net/y3quyg4n/1/ –

回答

2

您是否想過將系列數據存儲爲json字符串,然後將其解析回對象並將其傳遞到數據參數中?你可以這樣做:

var sData = JSON.stringify(chart.series[0].options.data); 

並將sData存儲爲字符串。然後加載回highcharts做:

var oData = JSON.parse(json_string_from_db); 

chart.addSeries({       
    name: "Test", 
    data: oData 
}); 

chart.series[0].setData(oData); 

我做了一個普拉克:https://plnkr.co/edit/myGoss?p=preview其使用setData()設置數據,但在創建系列時會加載數據。

+0

不起作用...未捕獲TypeError:將循環結構轉換爲JSON – Koiski

+0

嘗試上面的更改,使用'chart.series [0] .options.data'獲取數據。檢查我製作的笨蛋來測試它。 –