добавление серии в старшие чарты из JSON - PullRequest
10 голосов
/ 02 августа 2011

Я пытаюсь добавить серию в диаграмму старших диаграмм из данных 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 ]

16 голосов
/ 02 августа 2011

Я понял это.Вот как я это сделал в случае, если у кого-то еще есть тот же вопрос:

В моем скрипте, который генерирует данные 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 голос
/ 06 сентября 2014

В примере из проекта, над которым я сейчас работаю, я оцениваю данные ряда из такого массива. Может быть, это обман, но я по крайней мере заставил его работать:)

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)
         }]
0 голосов
/ 30 декабря 2015

Проверьте ответ (JSON DATA), поступающий через ajax, имеющий тип данных в качестве объекта или нет. Поскольку старшие диаграммы будут работать, ответ имеет тип данных как объект.

Если он возвращается в виде строки, преобразуйте его в объект, используя eval ('(' + response + ')')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...