Столкнулся с серьезной проблемой при работе с асинхронными HTTP запросами
Уже третий день не могу разобраться с одной задачей. Делаю несколько AJAX запросов для получения данных из XML файлов. Проблема в том, что когда я вызываю функцию fetchData()
, она должна возвращать результат (переменную resultData
), но вместо ожидаемого значения получаю undefined
.
Странно то, что внутри самой функции fetchData()
через alert()
вижу правильное значение, но когда пытаюсь присвоить результат переменной mainContent
, получается пустота.
Вот упрощенный код который использую:
(function() {
httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
if (httpRequest.readyState == 4 && httpRequest.status == 200) {
processData(httpRequest);
}
};
httpRequest.open("GET", "data1.xml", true);
httpRequest.send();
})();
function handleContent(callback) {
mainContent = fetchData();
alert(mainContent);
}
function fetchData() {
request = new XMLHttpRequest();
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200) {
result = parseXML(request);
alert(resultData);
return resultData;
}
};
request.open("GET", "data2.xml", true);
request.send();
}
function parseXML(xhr) {
var doc = xhr.responseXML;
var content;
var elements = doc.getElementsByTagName("Item");
// обработка данных
alert(content);
return content;
}
function processData(xhr) {
secondRequest = new XMLHttpRequest();
var document = xhr.responseXML;
var items = document.getElementsByTagName("Movie");
secondRequest.onreadystatechange = function() {
if (secondRequest.readyState == 4 && secondRequest.status == 200) {
parseXML(secondRequest);
}
};
secondRequest.open("GET", "data2.xml", true);
secondRequest.send();
}
Помогите пожалуйста разобраться в чем может быть проблема!