Я пытаюсь визуализировать диаграмму столбцов Highcharts из данных MySQL -> json_encode () -> getJSON ().В 95% случаев приходится обрабатывать 6 строк данных, поэтому их можно легко перебрать вручную, и диаграмма отрисовывается нормально.Проблема в том, что в массиве результатов иногда меньше строк - я, конечно, вижу TypeError: в этих случаях не удается прочитать свойство 'name' из undefined.Мой рабочий код:
$.getJSON(url, function(json)) {
if(typeof json === 'object' && json.length > 0) {
var nameData = [json[0]['name'],json[1]['name'],json[2]['name'],json[3]['name'],json[4]['name'],json[5]['name']];
var matchedData = [json[0]['data']['Matched'],json[1]['data']['Matched'],json[2]['data']['Matched'],json[3]['data']['Matched'],json[4]['data']['Matched'],json[5]['data']['Matched']];
var bookedData = [json[0]['data']['Booked'],json[1]['data']['Booked'],json[2]['data']['Booked'],json[3]['data']['Booked'],json[4]['data']['Booked'],json[5]['data']['Booked']];
}
var options = {
chart: {
renderTo: 'div',
type: 'column'
},
title: {
text: 'Chart Title',
x: -20
},
xAxis: {
type: 'category',
categories: nameData,
crosshair: true
},
series: [{
name: 'Matched',
data: matchedData
}, {
name: 'Booked',
data: bookedData
}]
}
chart = new Highcharts.Chart(options);
}
Это правильно отображает график.Однако, когда в массиве меньше, чем обычно 6 элементов, TypeError останавливает работу.Я попытался подсчитать элементы массива перед отправкой в Highcharts:
var nameData = [];
var matchedData = [];
var bookedData = [];
if (typeof json === 'object' && json.length > 0) {
for (var a = 0; a < json.length; a++) {
nameData += [json[a]['name']+","];
matchedData += [json[a]['data']['Matched']+","];
bookedData += [json[a]['data']['Booked']+","];
}
}
Это оповещение () выдает те же результаты, что и созданный вручную массив, но на графике ничего не отображается.Что нужно изменить?