HTTPRequest und Statusanzeige der PHP Schleife

Hallo,

ich werde mal die ganzen Positionen posten:

Zuerst das Script was das schleife.php Script aufruft:

HTML:
function schleife(value) {

	// 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 = "schleife.php";
		request.open('post', url, true);
                request.onreadystatechange = askforstatus();
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		request.send('action=send');
		switch (request.status) {
			case 200:
				var content = request.responseText;
				document.getElementById('bounce').innerHTML = content;
				break;
			default:
				alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
				break;
		}

	}
}

Die Statusabfrage und der eigentliche Aufruf des Scriptes, welches den HTTPRequest für die Statusabfrage ausführen soll:
HTML:
function askforstatus() {
	switch (request.readyState) {
		case 1:
			var getstatus = getStatus();
			setInterval(getstatus, 2000);
		break;
	}	
}


Dann das Script was den Status abfragen soll, also die getstatus.php:
HTML:
function getStatus() {
	// 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 = "getstatus.php";
		request.open('post', url, false);
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		request.send('status=test');
		switch (request.status) {
			case 200:
				var content = request.responseText;
				var zeit = showStatus();
				document.getElementById('bounce').innerHTML = content+zeit;
				break;
			default:
			alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
			break;
			}
	}
	request.send(null);
}

Und zu guterletzt das PHP Script, welches den Counter aus dem Session Array ausgibt:
PHP:
include('EG/newsletter/initialisierung.php');
header('Content-Type: text/html; charset=ISO-8859-15');
header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0');
print ($_SESSION['counter']);

Es funktioniert genau einmal, dann passiert nichts mehr. Der Counter wird korrekt in den Session Array geschrieben, das habe ich geprüft. Aber egal wie oft ich die Funktion "getStatus" aufrufe, es wird zwar die Zeit erneuert (daran sehe ich, dass es aufgerufen wird) aber nicht die Ausgabe des Session Counters.

Ich habe so das Gefühl, dass der Request für getstatus.php nur einmal ausgeführt wird bzw. die Datei getstatus.php nicht wiederholt aufgerufen wird, so das die Ausgabe $_SESSION['counter'] auch nur einmal aufgerufen wird.

Das macht mich verrückt.

Am liebsten wär mir, dass wenn der erste Status- Request erfolgreich abgeschlossen ist, der nächste durchgeführt wird.

Danke für eure Hilfe.
Gruss
Michael
 
Moin,

Code:
request.onreadystatechange = askforstatus();

Lasse dort die runden Klammern am Ende weg, sonst ist es nur ein Funktionsaufruf und keine Event-Überwachung ;)
 
Zurück