a5cl3p1o5: AJAX/SJAX - Warten bis XMLhttp-Request Antwort liefert

Beitrag lesen

Hallo Forenaktive,

ich hoffe, ihr könnt mir helfen:

Ich habe vor, einen XMLhttp-Request absetzen und zuvor einen Preloader einzublenden und nach Erhalt der Antwort wieder auszublenden.

Mit folgendem Code setze ich einen SYNCHRONEN Request ab, d.h. der Programmcode soll bewusst warten bis eine Antwort geliefert wurde.

	function getdatafunc(fileUrl) {  
		var req;  
		var fileContent;  
		// Firefox etc.  
		if (window.XMLHttpRequest) {  
			req = new XMLHttpRequest();  
			req.open("GET", fileUrl, false);  
			req.send(null);  
			fileContent = req.responseText;  
		}  
		// Internet Explorer  
		else if (window.ActiveXObject) {  
			req = new ActiveXObject("Microsoft.XMLHTTP");  
			req.open("GET", fileUrl, false);  
			req.onreadystatechange=function() {  
				if (req.readyState == 4) {  
					fileContent = req.responseText;  
				}  
			}  
			req.send(null);  
		}  
		return fileContent;  
	}  

Von der Idee her, soll der Preloader angezeigt werden, die Daten geladen und anschließend der Preloader ausgeblendet werden:

document.getElementById('preloader').style.visibility = 'visible'; //Preloader anzeigen  
data = eval(getdatafunc(fileUrl)); //SJAX-Request absetzen  
document.getElementById('preloader').style.visibility = 'hidden'; //Preloader ausblenden

Im Firefox funktioniert dieser Ansatz. Im Internet Explorer wird der Request wie ein AJAX-Request behandelt und der Code weiter ausgeführt. Der Preloader wird daher sofort wieder ausgeblendet.

Hat jemand eine Idee, wie ich auch im Internet Explorer das gewünschte Ergebnis erziele?

Viele Dank im Voraus!
a5cl3p1o5