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

Asked
Active
Viewed 167 times
0
-
Уберите const у xhr, var getData вместо const – Kirill Feb 17 '18 at 21:30
-
Что даст смена типа переменной? – Егор Feb 18 '18 at 12:19
2 Answers
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