[IE] XMLHttpRequest funktioniert nicht

rambo

Mitglied
Hi,

ich habe mal folgenden Code zum Testen erstellt:
PHP:
<?php
if (isset($_GET['status'])) {
	echo time();
	exit;
	}
?>
<script type="text/javascript">
function getProgress() {
	var xmlHttp = false;
	try {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
	catch(e) {
		try {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
		catch(e) {
			xmlHttp = false;
			}
		}
	if (!xmlHttp && typeof XMLHttpRequest != "undefined") {
		xmlHttp = new XMLHttpRequest();
		}
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
			document.getElementById("time").innerHTML = xmlHttp.responseText;
			setTimeout(function() { getProgress(); }, 100);
			}
		};
	xmlHttp.open("GET", "?status=");
	xmlHttp.send(null);
	}
window.onload = getProgress;
</script>
<div id="time"></div>

Nun rufe ich die Seite mit dem Internet Explorer (Version 5.5 bis 8) auf. Es wird zwar ein mal der Timestamp geladen aber dann wird er nicht wieder neu geladen. Bei FireFox funktiniert das alles super. Der Internet Explorer zeigt auch keinen Fehler an oder so.

Woran liegt es, dass es nicht funktioniert?

Danke im Voraus für eure Hilfe.
 
Moin,

ich würde als Erstes das Caching des Browsers verdächtigen.
Die Datei wird aus dem Cache geladen,...in der Datei dort steht noch die alte Zeit.

Lösungsvorschlag(wie immer derselbe:)):
Code:
xmlHttp.open("GET", "?status="+new Date().getTime());

Und bedenke: So ein Server ist auch nur ein Mensch :suspekt:

Wenn du 10x pro Sekunde einen Request abschickst, bedeutet das nicht, dass die Antworten jede 1/10 sec. eintreffen werden.
 
ich habe einfach die eine Zeile so geändert, da alters blöd sind :D
Code:
document.getElementById("time").innerHTML += "__" + xmlHttp.responseText;

Ich habe gemerkt, dass alle Werte gleich sind. Und dann ist es mir eingefallen:

Es lag indirekt am IE. Der FireFox-Browser cachet die Timestamp-Ausgabe nicht, der IE schon. Desshalb habe ich jetzt einfach das eingebaut:

PHP:
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

// Edit: Ooops, da war jemand schneller, aber trotzdem danke xD
Naja, das Ganze ist für eine Uploadprogressbar. Da hat man meißt keine Zeit 1000ms zu warten :D. Mir doch egal, ob der Server mir eine Antwort gibt, hauptsache ist, dass ich mein Progressbar angezeigt bekomme und und mein Provider sich nicht beschwert ^^
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück