0

Как сделать чтобы getData() возвращала не undefined, а содержимое строки 36? Как сделать чтобы getData() возвращала не undefined, а содержимое строки 36?

2 Answers2

1

Приблизительно так:

var response = JSON.parse(this.responseText)
// далее в цикле получить значения 
// или вывести в консоль, например name
console.log(response.name)
Pyramidhead
  • 2,178
  • Способ записывает ответ внутри области видимости анонимной функции, а мне нужна возможность получить доступ к данным из ответа внутри любой области видимости. – Егор Feb 17 '18 at 17:23
  • я Вам показал как вообще что-либо вывести в консоль из ответа сервера. У Вас же до этого было просто undifined –  Feb 17 '18 at 17:40
  • Что Вам стоит сделать return response.name? Или собрать всё в строку и опять же, через return. –  Feb 17 '18 at 17:44
1

поскольку вы используете асинхронный запрос то код после запроса продолжает выполняться, а функция не успевает возвращать значение, можно использовать функцию callback : в функцию getData(callback) отправляете функцию callback

function returnData(data){
console.log(data);
}

getData(returnData){
// формирование запроса
if(this.readyState ==4 &&this.status == 200){
 returnData(JSON.parse(this.responseText));
}
}
Gs D
  • 935
  • Пробовал такой каллбек, в консоль ничего не выводит. Комментарии убирают табуляцию из кода, поэтому ссылка на кодпен: https://codepen.io/beast1/pen/KQZZjR – Егор Feb 17 '18 at 17:20
  • Как оказалось ничего он не выводил из-за того что я сделал xhr.onreadystatechange через стрелочную функцию. Когда заменил обратно на обычную всё заработало. – Егор Feb 17 '18 at 17:47