Создание новых объектов JSON путем доступа к переменным ключам в другом объекте JSON - PullRequest
1 голос
/ 06 июня 2009

Я пытаюсь взять существующий объект JSON и создать из него более мелкие фрагменты JSON, предназначенные для создания отдельных графиков. Вот мой код, который использует jQuery:

function updateStationGraphs (bsid) {
    $.getJSON("includes/system/ajaxDataInterface.php", {format:'flot',target:bsid}, function(data) {
        var graphOptions = {
            series: {
              lines: { show: true },
              points: { show: true }
            }
          };
        var handsetData = new Array(data[bsid].maxHandsets,data[bsid].avgHandsets);
        $.plot($('.graphHandsets'),handsetData,graphOptions);
    });

}

Уточнение: handsetData ожидает что-то в формате:

  [ { label: "Foo", data: [ [10, 1], [17, -14], [30, 5] ] },
    { label: "Bar", data: [ [11, 13], [19, 11], [30, -7] ] } ]

Моя проблема заключается в том, что при вызове updateStationGraphs ('A5A50000'), например, он сообщает, что данные [bsid] не определены. Раньше у меня была похожая проблема, но моя проблема оказалась в том, что я снова изменил расположение моего объекта данных и играл с неправильным объектом. Похоже, что это не так, и я не могу понять, почему он не дает мне доступ к данным [bsid].

Вот как должны выглядеть данные:

var data = {"A5A50000":{"time":{"label":"time","data":[[1244045863,"2009-06-03 16:17:43"],[1244045803,"2009-06-03 16:16:43"],[1244045743,"2009-06-03 16:15:43"],[1244045683,"2009-06-03 16:14:43"],[1244045623,"2009-06-03 16:13:43"],[1244045563,"2009-06-03 16:12:43"],[1244045503,"2009-06-03 16:11:43"],[1244045443,"2009-06-03 16:10:43"],[1244045383,"2009-06-03 16:09:43"],[1244045323,"2009-06-03 16:08:43"]]},"avgHandsets":{"label":"avgHandsets","data":[[1244045863,204.7143],[1244045803,205.9444],[1244045743,205.3333],[1244045683,205.3889],[1244045623,204.5882],[1244045563,204.8235],[1244045503,205],[1244045443,205.9412],[1244045383,205.6667],[1244045323,204.1176]]},"maxHandsets":{"label":"maxHandsets","data":[[1244045863,314],[1244045803,314],[1244045743,315],[1244045683,315],[1244045623,315],[1244045563,314],[1244045503,314],[1244045443,316],[1244045383,316],[1244045323,312]]}}};

Предложения с благодарностью. Спасибо заранее.

Ответы [ 2 ]

2 голосов
/ 06 июня 2009

Я проверил ваш код, и все в порядке. Я получаю график flot, сгенерированный правильно после вызова $.getJSON().

Необходимо убедиться, что возвращаемые данные JSON содержат объявление переменной и точку с запятой в конце, как в вашем примере.

Другими словами, это должен быть только JSON.

{"A5A50000":{"time":{"label":"time","data":[[1244045863.........]}}}

Вместо:

var data = {"A5A50000":{"time":{"label":"time","data":[[1244045863,....

Это может быть проблемой.

0 голосов
/ 08 июня 2009

Оглядываясь назад, после отдыха и нового старта я смог понять, что я получаю доступ к данным [bsid], когда bsid = 'a5a50000' вместо bsid = 'A5A50000'. ВСЕГДА ПРОВЕРЯЙТЕ СЛУЧАЙ! вздох

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