Задать вопрос
alexdeg
@alexdeg
Новатор

Почему выдает undefined внутри XMLHttpRequest?

function get_manager(manager_id) {
    var xhr_one = new XMLHttpRequest();
    var name_manager = '';

    xhr_one.open('get', 'http://localhost:8000/get_managers?mid=' + manager_id + '&secure=' + localStorage.getItem('secure'), true);
    xhr_one.send();

    xhr_one.addEventListener('load', function () {
        name_manager = JSON.parse(xhr_one.response);

        return name_manager.fullname;
    });
}


Почему выдает undefined? Если поместить return снаружи то вообще ничего не выводит
  • Вопрос задан
  • 230 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
rework
@rework
Помог ответ? В благодарность отметь его решением
Можно сделать, что бы функция get_manager возвращала promise:

function get_manager(manager_id) {
  return new Promise(function (resolve, reject) {
    var xhr_one = new XMLHttpRequest();
    var name_manager = '';

    xhr_one.open('get', 'http://localhost:8000/get_managers?mid=' + manager_id + '&secure=' + localStorage.getItem('secure'), true);
    xhr_one.send();

    xhr_one.addEventListener('load', function () {
        name_manager = JSON.parse(xhr_one.response);
        resolve(name_manager.fullname);
    });
    
    xhr_one.addEventListener('error', function () {
      reject({
        status: this.status,
        statusText: xhr_one.statusText
      });
    });
  }
}


вызывать её так:

get_manager(manager_id).then((name_manager) => {
  console.log(name_manager);
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А куда return должен возвратить ответ, если функция срабатывает асинхронно, после прихода ответа от сервера?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 13:22
30000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект
18 дек. 2024, в 12:22
5000 руб./за проект