Я использую SpringBoot. В «/ api / events» у меня есть список событий. Вот код Java, который возвращает этот список:
@GetMapping(path = "/api/events", produces = "application/json")
@Transactional
public @ResponseBody List<?> getEvents() {
Query q = entityManager
.createQuery("SELECT DISTINCT e FROM Event e JOIN e.blocks b WHERE b.begin > :currDate")
.setParameter("currDate", new Date());
return q.getResultList();
}
Как выглядят данные в / api / events:
[
{"eventId":1,"title":"Test Event","owner":{"nick":"asd","mail":"abc@qq.pl","userId":5},"blocks":[{"blockId":1,"begin":"2018-01-01T11:00:00.000+0000","end":"2018-01-01T14:00:00.000+0000","minPerSlot":10},{"blockId":2,"begin":"2018-08-01T10:00:00.000+0000","end":"2018-08-01T13:00:00.000+0000","minPerSlot":10}]},
{"eventId":3,"title":"Test2","owner":{"nick":"asd","mail":"abc@qq.pl","userId":5},"blocks":[{"blockId":3,"begin":"2018-08-01T10:00:00.000+0000","end":"2018-08-01T13:00:00.000+0000","minPerSlot":10}]}
]
В JS я хочу загрузить эти данные. Я использую этот код:
function loadEvents() {
var events = httpGet("/api/events");
var len = events.length;
}
var getJSON = function(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'json';
xhr.onload = function() {
var status = xhr.status;
if (status === 200) {
callback(null, xhr.response);
} else {
callback(status, xhr.response);
}
};
xhr.send();
};
function httpGet(theUrl) {
getJSON(theUrl,
function(err, data) {
if (err !== null) {
alert('Something went wrong: ' + err);
} else {
return data;
}
});
}
Тогда я получаю сообщение об ошибке:
Uncaught TypeError: Cannot read property 'length' of undefined
at loadEvents
Это то, что я получаю, а не массив объектов JSON? Как мне разобрать это?