Hallo dude,
was da geschieht, ist absolut logisch. Du sendest zwei Requests asynchron. Sie laufen also parallel. Daher konkurrieren sie, den Du speicherst sie in ein und derselben Variable req ab. Parallel überschreiben sich nun die beiden Anfragen gegenseitig die Eigenschaft req.readyState. Das kannst Du aber verhindern, wenn Du mehrere Variablen nutzt. Ich würde Dir dazu folgendes vorschlagen:
var req=[];
function ahah(url, target) {
document.getElementById(target).innerHTML = 'Loading...';
if (window.XMLHttpRequest) {
req[target] = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req[target] = new ActiveXObject("Microsoft.XMLHTTP");
}
if (req[target] != undefined) {
req[target].onreadystatechange = function() {ahahDone(url, target);};
var url = url + ((url.indexOf("?") == -1) ? "?" : "&") + escape(new Date().toString()); //permet de ne pas utiliser le cache
req[target].open("GET", url, true);
req[target].send("");
}
}
function ahahDone(url, target) {
if (req[target].readyState == 4) {
if (req[target].status == 200) {
document.getElementById(target).innerHTML = req[target].responseText;
} else {
document.getElementById(target).innerHTML=" AHAH Error:\n"+ req[target].status + "\n" +req[target].statusText;
}
}
}
Gruß aus Berlin!
eddi