我試圖同時做2個(或更多)ajax調用。我不想使用jQuery,只使用純JavaScript。同時ajax調用
大多數情況下,它的工作原理。 data1將從sample.com/ajax1輸出數據,data2將從sample.com/ajax2輸出數據,但有時(從10開始)第二個AJAX調用將顯示第一個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();
_「但有時(從10開始)第二個AJAX調用將顯示來自第一個AJAX調用的結果。」_因爲它們是異步的。在第二次AJAX呼叫之前發送的一個AJAX呼叫將在第二次呼叫返回之前返回,這是零保證。 – j08691
「var data」是問題.... – cocco
嘗試使用'data1'和'data2'而不是'data',因爲它們都共享相同的變量。 – Pete