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 снаружи то вообще ничего не выводит
  • Вопрос задан
  • 209 просмотров
Решения вопроса 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 должен возвратить ответ, если функция срабатывает асинхронно, после прихода ответа от сервера?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы