从JSON向highcharts添加系列

时间:2011-08-01 23:10:31

标签: ajax json date highcharts

我正在尝试从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
});
 }

任何人都可以帮我完成此查询以使图表正常工作吗?在此先感谢您的帮助!

编辑:我解决了这个问题 - 请问以下我知道如何解决这个问题

3 个答案:

答案 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 +')')