我正在尝试从JSON数据中添加一个系列到高图表图表。 json有日期和y值:
{Date.UTC(2011,8,1): 47, Date.UTC(2011,8,2): 78}
和我目前拥有的javascript函数,它添加了系列但日期似乎不起作用,是:
function requestData() {
$.ajax({
url: 'chartData.php',
success: function(items) {
var series = {
id: 'series',
name: 'JSON Data',
data: []
}
$.each(items, function(itemNo, item) {
series.data.push(item);
});
chart.addSeries(series);
},
cache: false
});
}
任何人都可以帮我完成此查询以使图表正常工作吗?在此先感谢您的帮助!
编辑:我解决了这个问题 - 请问以下我知道如何解决这个问题
答案 0 :(得分:16)
我想出来了。以下是我如何做以防万一其他人有同样的问题:
在我生成JSON数据的脚本中,我执行了以下操作:
header('Content-type: text/json');
//Placeholder - random data for now
$x1 = "2011-8-1";
$y1 = rand(0, 100);
$x2 = "2011-8-2";
$y2 = rand(0, 100);
//Generate this array from database data
$arr = array($x1 => $y1, $x2 => $y2);
echo json_encode($arr);
然后,在将系列添加到图表的ajax脚本中,我执行了以下操作:
function requestData() {
$.ajax({
url: 'chartData.php',
success: function(json) {
var series = {
id: 'series',
name: 'JSON Data',
data: []
}
$.each(json, function(date,value) {
xval = date.split("-");
x = Date.UTC(xval[0], xval[1] - 1, xval[2]);
series.data.push([
x,
value
]);
});
chart.addSeries(series);
},
cache: false
});
}
答案 1 :(得分:1)
在我正在进行的项目的示例中,我从这样的数组中评估系列数据。也许这是作弊,但我至少得到了它的工作:)
var xAxisCat = new Array();
var hSeries = new Array();
for (var datevote in contestantObject.contestants[cObj].votes)
{
xAxisCat.push(datevote);
hSeries.push(contestantObject.contestants[cObj].votes[datevote]);
}
var setSeries = "["+hSeries+"]";
然后,在系列创作中,我改为评估创建的数组:
series: [{
name: contestantObject.contestants[cObj].name,
data: eval(setSeries)
}]
答案 2 :(得分:0)
检查通过ajax的响应(JSON DATA)是否具有数据类型作为对象。因为highcharts可以使用它,所以响应的数据类型为object。
如果它以字符串形式返回,则使用eval将其转换为对象('('+ response +')')