0

我一直在努力将数据放入一个高图表中,但难度很大。

最终我不得不使用 eval(data)。

有一个更好的方法吗?

JSFiddle 示例

$(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)
        }]
    });
});

更新 1

我的实际目标是将 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
        }]
    });
    }

这是使用 print_r() 的 php 中的 JSON 对象:

{"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]"}
4

2 回答 2

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 来序列化/反序列化数据。

于 2013-07-20T15:24:17.740 回答
0

问题是你正在使用Date.UTC()函数,所以你需要使用eval。传递数字(以毫秒为单位的时间戳)而不是那个函数怎么样?所以,你的 JSON 应该是这样的:

{
 "pricePrices":[1367971200000, 67],[1372377600000, 29],
 "salePrices":[1367971200000, ],[1372377600000, ], //where are values ?!
 "rrpPrices":[1367971200000, 67],[1372377600000, 67] //without extra '"'!! 
}

另外,第二个系列有一些缺失值,它们在哪里?

于 2013-07-22T10:48:44.040 回答