РЕШИТЬ:
Я нашел ответ, который наконец-то сработал! Расстраиваю, что это заняло у меня несколько дней, потому что это не было хорошо задокументировано Highcharts (и / или, может быть, мое понимание jQuert и JavaScript все еще находится на уровне новичков).
Ответ: не отправлять данные X / Y в виде предварительно сформированного массива в объекте json, а вместо этого просто отправлять числа, составляющие дату (значение x) и значение (значение y) в виде списка значений, разделенных запятыми, в объекте json, а затем выполните синтаксический анализ и передачу на стороне клиента.
Например: Изначально я пытался заставить мой PHP отправить что-то вроде
[{"name":"Name 1","data":["[Date.UTC(2011,11,08), 4 ]","[Date.UTC(2011,11,09), 4 ]","[Date.UTC(2011,11,10), 4 ]","[Date.UTC(2011,11,11), 4 ]","[Date.UTC(2011,11,14), 3 ]"]}
но мне действительно нужно было отправить что-то вроде
[{"name":"Name 1","data":["2011,11,08, 4","2011,11,09,4"....`
Первый шаг - убедиться, что для опции «series» задан пустой массив series: []
(я упоминаю об этом, потому что видел другие ответы, где это было сделано по-другому).
Затем в функции getJSON вам нужно создать новый объект для каждого объекта, который вы извлекаете, который также включает пустой массив «data» (см. «Var series» ниже).
Затем вложите несколько циклов $.each
для анализа и вставки данных в их необходимые массивы и заполните «имя» каждого объекта:
$.getJSON('http://exmaple.com/getdata.php?ID=' + id, function(data) {
$.each(data, function(key,value) {
var series = { data: []};
$.each(value, function(key,val) {
if (key == 'name') {
series.name = val;
}
else
{
$.each(val, function(key,val) {
var d = val.split(",");
var x = Date.UTC(d[0],d[1],d[2]);
series.data.push([x,d[3]]);
});
}
});
options.series.push(series);
});
После приведенного выше кода вам нужно создать экземпляр диаграммы:
var chart = new Highcharts.Chart(options);
И это должно быть!
Надеюсь, кто-то найдет этот ответ полезным и ему не нужно бить себя по голове в течение нескольких дней, пытаясь выяснить это. : -)