Запись полученых данных в переменную
Делаю GET запрос, получаю ответ, ответ в виде строки хочу сохранить в переменную. Код выполняется, но ума не приложу как сохранить в переменную то, что возвращает функция. Дальше хочу преобразовать полученную инфу при помощи JSON.parse() в объект.
var xhr = new XMLHttpRequest();
var phone = ''
xhr.open('GET', `http://web.ru:8080/${phone}`);
xhr.onload = function() {
console.log(xhr.responseText)
};
xhr.send();```
//в консоль ответ от сервера выводится нормально.
```xhr.onload = function() {
let a = xhr.responseText
return a;
};
xhr.send();
console.log(a);``` Undefined
Ответы (1 шт):
Советую вам изучить основы асинхронности в JavaScript. Ксли кратко, то код выполняется сверху вниз. Если встречаются запросы, то они помещаются в специальный отдел памяти, где ждут, когда придет ответ от сервера. В это время код продолжает выполнятся.
Соответственно, вы пытаетесь получить значение до того, как оно придет в качестве ответа от бэкенда.
Во-вторых, вы пытаетесь получить переменную let, объявленную внутри функции onload, соответственно увидеть ее снаружи этой функции нельзя. Она должна быть объявлена выше.
function() {
let a = xhr.responseText
return a;
};
//тут "a" не видно
В вашем случае нужно пересмотреть способы работы.
- XHR - это устаревшее API, которое сейчас не используется, советую использовать Promise, Fetch или Async, перед этим прочитав то, как они работают.
async function getPhone(phone) {
let response = await fetch(`http://web.ru:8080/${phone}`);
let phoneData = await response.json();
// тут можно преобразовать ваши данные в объект
return phoneData;
}
const result = getPhone('+799999999');