Так что в принципе у меня функция ajax довольно стандартная.Например:
function ajax_call(rest_req, url, success_callback, fail_callback) {
// if (request_in_progress)
// return;
// request_in_progress = true;
var xhttp = new XMLHttpRequest;
xhttp.onreadystatechange = function () {
if (this.readyState == 4) {
// request_in_progress = false;
if (this.status == 200) {
success_callback(this);
}
else {
fail_callback(this);
}
}
};
xhttp.open(rest_req, url, true);
xhttp.send();
}
Когда я использую функцию ajax следующим образом:
(function() {
function setup() {
ajax_call("GET", "url1", function(xhttp) {
response = JSON.parse(xhttp.responseText);
if (response["error"] != 100)
document.getElementById('url1-reading').innerHTML = '---';
else
document.getElementById('url1-reading').innerText = response["response"];
},
function() {}
);
ajax_call("GET", "url2" , function(xhttp) {
response = JSON.parse(xhttp.responseText);
if (response["error"] != 100)
document.getElementById('url2-reading').innerHTML = '---';
else
document.getElementById('url2-reading').innerText = response["response"];
},
function() {}
);
console.log('Refresh');
}
setInterval(setup, 1000);
})();
Этот код ведет себя не так, как я ожидаю.Когда я запускаю этот код, бывают случаи, когда результаты, которые должны были перейти на url1 success_callback, попадают в url2 success_callback.
Иными словами, переменная response
внутри url1 ajax_call - это то, что я ожидал показать как переменную ответа для url2.Так что, по сути, ajax_call, похоже, не знает, что такое success_callback, хотя я явно передаю его в качестве параметра.
Я пришел из C ++, так что это сложная концепция для понимания.Как мне сделать это правильно?Я надеюсь, что мой вопрос ясен.Пожалуйста, скажите мне, что не ясно, чтобы я мог уточнить.