Я пытаюсь сделать два (или более) вызова ajax одновременно. Я не хочу использовать jQuery, только чистый JavaScript.Одновременные вызовы ajax
В большинстве случаев это работает. data1 будет выводить данные из sample.com/ajax1, а data2 будет выводить данные из sample.com/ajax2, но иногда (1 из 10) второй вызов AJAX отображает результат с первого.
Почему это происходит? Оба запроса AJAX запрашивают данные из одного домена, но с разных URL-адресов. Есть ли способ предотвратить это поведение?
Вот сценарий:
// First AJAX
var xmlhttp1;
// Second AJAX
var xmlhttp2;
if (window.XMLHttpRequest) {
xmlhttp1 = new XMLHttpRequest();
} else {
xmlhttp1 = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp1.onreadystatechange = function() {
if (xmlhttp1.readyState == 4 && xmlhttp1.status == 200) {
data = JSON.parse(xmlhttp1.responseText);
console.log('data1: ' + data);
}
}
xmlhttp1.open("GET", "http://sample.com/ajax1", true);
xmlhttp1.send();
if (window.XMLHttpRequest) {
xmlhttp2 = new XMLHttpRequest();
} else {
xmlhttp2 = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp2.onreadystatechange = function() {
if (xmlhttp2.readyState == 4 && xmlhttp2.status == 200) {
data = JSON.parse(xmlhttp2.responseText);
console.log('data2: ' + data);
}
}
xmlhttp2.open("GET", "http://sample.com/ajax2", true);
xmlhttp2.send();
_ "но иногда (1 из 10) второй вызов AJAX отображает результат с первого." _ Поскольку они асинхронны. Существует нулевая гарантия того, что один вызов AJAX отправлен до того, как второй вызов AJAX вернется до того, как будет возвращен второй вызов. – j08691
"var data" является проблемой .... – cocco
Попробуйте использовать 'data1' и' data2' вместо 'data', так как они оба используют одну и ту же переменную. – Pete