Hallo!
function starteAjax(url) {
req = new XMLHttpRequest();
Da verwendest hier eine globale Variable (wie JürgenB sagt). Du überschreibst sie beim zweiten Request. Dadurch greift dein readystatechange-Handler nicht auf das korrekte XMLHttpRequest-Objekt zu (er greift zweimal auf dasselbe zu).
Das liegt an der Asychronität. Erst wird starteAjax zweimal aufgerufen, dann nach einiger Zeit meineCallbackFkt zweimal.
Zwei Möglichkeiten:
1. Funktionen verschachteln, sodass die innere Funktion eine Closure ist, die die Variablen der äußeren Funktion konserviert:
var starteAjax = function(url) {
// Lokale Variable (Funktionsvariable)
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
// Zugriff auf req
// req.readyState usw.
// req ist hier immer das korrekte Objekt
};
req.send();
};
2. Du kannst im Handler alternativ über »this« auf das XMLHttpRequest-Objekt zugreifen:
var starteAjax = function(url) {
var req = new XMLHttpRequest();
req.onreadystatechange = meineCallbackFkt;
};
var meineCallbackFkt = function() {
// Zugriff auf this
// this.readyState usw.
};
Mathias