Подтвердить что ты не робот

Добавление серии в highcharts от JSON

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

Может ли кто-нибудь помочь мне завершить этот запрос, чтобы заставить график работать? Заранее спасибо за помощь!

РЕДАКТИРОВАТЬ: Я РЕШЕН ЭТО - СМОТРИТЕ ОТВЕТ, КАК Я ДЕЛАТЬ ЭТО

4b9b3361

Ответ 1

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

В моем script, который генерирует данные 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 script, который добавляет серию к диаграмме, я сделал следующее:

    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
});
}

Ответ 2

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

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)
         }]

Ответ 3

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

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