我一直在努力将数据放入高级图表中,而且非常困难。
最终我不得不使用eval(数据)。
有更好的方法吗?
$(function () {
var test = "[[Date.UTC(2013, 4, 08), 45.95],[Date.UTC(2013, 5, 28), 19.95]]";
$('#container').highcharts({
chart: {
},
xAxis: {
type: 'datetime'
},
series: [{
data: eval(test)
}]
});
});
我的实际目标是将一个JSON对象传递给一个函数(如下所示),然后获取所需的字符串并将它们传递给系列输入。
以下内容仍无效。
function showPriceChart(priceData) {
var json = jQuery.parseJSON(priceData);
var pricePrices = [ json.pricePrices ];
// This works if I use eval below
// var pricePrices = '['+json.pricePrices+']';
/// Other chart config goes here
series: [{
name: 'Retailer Price',
data: pricePrices
}, {
name: 'RRP',
data: rrpPrices
}]
});
}
这是来自php的JSON对象,使用print_r():
{"pricePrices":"[Date.UTC(2013, 4, 8), 67],[Date.UTC(2013, 5, 28), 29]","salePrices":"[Date.UTC(2013, 4, 8), ],[Date.UTC(2013, 5, 28), ]","rrpPrices":"[Date.UTC(2013, 4, 8), 67],[Date.UTC(2013, 5, 28), 67]"}
答案 0 :(得分:0)
你真的很接近你的目标。 以下是有效的:
(http://jsfiddle.net/G6jrU/3/)
$(function () {
var test =[ [ Date.UTC(2013, 4, 08), 45.95 ],
[ Date.UTC(2013, 5, 28), 19.95 ] ];
$('#container').highcharts({
chart: {
},
xAxis: {
type: 'datetime'
},
series: [{ data : test }]
});
});
Rq:如果需要,可以使用JSON序列化/反序列化数据。
答案 1 :(得分:0)
问题是您使用的是Date.UTC()
函数,因此需要使用eval。如何传递数字(以毫秒为单位的时间戳)而不是那些函数?所以,你的JSON应该是这样的:
{
"pricePrices":[1367971200000, 67],[1372377600000, 29],
"salePrices":[1367971200000, ],[1372377600000, ], //where are values ?!
"rrpPrices":[1367971200000, 67],[1372377600000, 67] //without extra '"'!!
}
此外,第二个系列还有一些缺失值,它们在哪里?