Hallo Leute,
bastle grade meine ersten kleinen AJAX-Spielereien und bin auf ein Problem gestossen, an dem ich mir den Kopf zerbreche.
Nachfolgend die setRequest-Funktion, welche durch onChange innerhalb eines Formulars aufgerufen wird (funktioniert!):
Code:
// Request senden
function setRequest(urlParam, elemId, target) {
// Request erzeugen
if (window.XMLHttpRequest) {
request = new XMLHttpRequest(); // Mozilla, Safari, Opera
} else if (window.ActiveXObject) {
try {
request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
} catch (e) {
try {
request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
} catch (e) {}
}
}
// überprüfen, ob Request erzeugt wurde
if (!request) {
alert("Kann keine XMLHTTP-Instanz erzeugen");
return false;
} else {
var url = urlParam;
var id = document.getElementById(elemId).id;
var value = document.getElementById(elemId).value;
// Request öffnen
request.open('post', url, true);
// Requestheader senden
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// Request senden
request.send('sent=' + value);
// Request auswerten
request.onreadystatechange = interpretRequest(elemId);
}
}
Und nun die Stelle an der es harkt: Nur wenn ich den 1. alert (alert('0')

drin lasse, wird auch der Rest der Funktion ausgeführt. Nehme ich den alert raus, passiert gar nichts.
Code:
// Request auswerten
function interpretRequest(elemId) {
//var element = elemId;
alert('0');
switch (request.readyState) {
// wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
case 4:
if (request.status != 200) {
alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
} else {
var content = request.responseText;
// den Inhalt des Requests in das <div> schreiben
if(elemId == 'selectdocseminars'){
alert('1');
document.getElementById('selectfolders').innerHTML = content;
document.getElementById('folders').style.visibility = "visible";
}
else if(elemId == 'docterms'){
alert('2');
document.getElementById('selectdocseminars').innerHTML = content;
document.getElementById('docseminars').style.visibility = "visible";
document.getElementById('folders').style.visibility = "hidden";
}
else if(elemId == 'folderterms'){
alert('3');
document.getElementById('selectfolderseminars').innerHTML = content;
document.getElementById('folderseminars').style.visibility = "visible";
}
}
break;
default:
break;
}
}
vielen Dank für eure Hilfe!