Хотел бы структурировать отправку запросов через XMLHttpRequest и создать отдельно методы.
Но не могу разобраться, почему внутри callback- функции request.onreadystatechange, не присваивается значение полученного ответа в переменные, которые объявлены выше. Также попробовал создать свойство в объекте, в которое тоже хотел бы поместить значение, но на момент выполнения if, внутри onreadystatechange, она присваивается и отображается. Но после, будто бы и не было никакой функции. Подскажите пожалуйста, что я упускаю?
This -that тоже пробовал. Непосредственно при обращении к свойству, решил это делать через название объекта, чтобы уж наверняка присвоилось. Но нет.. Хотелось бы, чтобы этот response возвращался (return), при выполнении метода.
let req_obj = {
th : 2,
sendRequest () {
let request = new XMLHttpRequest();
let url_query = "/test-request" + this.get_query_builder();
request.open('GET', url_query);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send();
let response;
request.onreadystatechange = function () {
if (request.readyState == 4 && request.status == 200) {
response = request.responseText;
console.log(response); // Ответ получен и записан, переменная отображается
console.log(this); // XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, u..........
req_obj.th = response; // Пробую записать ее непосредственно в свойство объекта
console.log(req_obj.th); // Ответ получен и записан, переменная отображается
}
};
console.log(response); // undefined
console.log(req_obj.th); // Будто ничего и не было присвоено, также как и сверху
// было указано, что там значение 2
console.log(this); // Отображает объект req_obj
},