javascript — функция, включающая XMLHttpRequest, возвращает только неопределенное значение

Функция, включающая XMLHttpRequest, возвращает только неопределенное значение

Я разрабатываю приложение для веб-мессенджера для моего первого проекта JS. Пока все работает. Но я столкнулся с некоторыми проблемами при получении сообщений с сервера.

У меня есть функция, которая будет обновлять массив ‘messages’ внутри класса. Однако функция, которая извлекает сообщения с сервера, возвращает только неопределенное значение. Вот функция.

 getMessagesSince(id, callback) { /* [{ 'sessionid': '', 'username': '', 'id': 0, 'body': '' }] */ var request = new XMLHttpRequest(); request.open('GET', './getmessage.php?since='   id.toString(), false); request.onload = function() { //console.log(request.response); var jsonObject = JSON.parse(request.response); var output = []; for (var i = 0; i {amp}lt; jsonObject.length; i  ) { var select = jsonObject[i]; var messageObject = new Message(select.username, select.sessionid, select.body, select.id); //console.log(messageObject); output.push(messageObject); } return output; } request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); request.send("since="   id.toString()); } 

Функция отправляет запрос в PHP-скрипт для получения сообщений со значением идентификатора, превышающим значение, определенное в id из базы данных MySQL. Я проверил, что все эти другие функции работают правильно.

Частями, на которые следует обратить внимание, является функция request.onload поскольку именно здесь возвращается значение. Я определил, что return output; никогда не достигается Я определил это по времени, сколько времени занимает выполнение функции. Время, необходимое для успешной работы функции (сервер подключен к сети), равно времени, в течение которого функция не работает (сервер отключен). Оба возвращают неопределенное значение.

Я попытался установить false в request.open('GET', './getmessage.php?since=' id.toString(), false); к истине. Но я получил сообщение об ошибке, сказавшее, что это отрицательно сказывается на работе пользователя (я не смог воспроизвести ошибку).

Я попытался использовать функции обратного вызова, которые будут определены при вызове getMessagesSince но только получили TypeError: callback is not a function .

Это функция обратного вызова, которую я использовал:

 pushMessages(input) { this.messages.push(input); } 

Я считаю, что это как-то связано с тем, что функция возвращается до завершения выполнения. Таким образом, выдача неопределенной ошибки.

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector