Textdatei ständig öffnen und auslesen

chpo

Grünschnabel
Ich möchte eine Textdatei öffnen, dessen Inhalt sich ständig ändert!
Deshalb muss ich diese auch ständig neu auslesen, nur funktioniert dies leider nicht so wie ich das gerne hätte.

Die Textdatei wird leider nur einmal ausgelesen. Bei einem Reload ändert sich leider auch nichts. Erst wenn ich die Seite schließe und wieder komplett neu lade.

Kann mir jemand dabei weiterhelfen?

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset=iso-"8859-1" />
<title>test</title>
<script type="text/javascript">
<!--
var request;

function createXMLHttpRequest() 
{

	var req;
			
	try 
	{
		if(window.ActiveXObject) 
		{
			for(i = 5; i; i--) 
			{
				try 
				{
					if(i == 2) 
					{
						req = new ActiveXObject( "Microsoft.XMLHTTP" );
					}
					else 
					{
						req = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
					}
					
					break;
				}
				catch(e) 
				{
					req = false;
				}
			}
		} 
		else if(window.XMLHttpRequest) 
		{
			req = new XMLHttpRequest();
			
			if(req.overrideMimeType) 
			{
					req.overrideMimeType('text/xml');
			}
		}
	} 
	catch(e)
	{
		req = false;
	}
	
	return req;
}

function getData(url) 
{
	if(request && request.readyState)
	{
		request.abort();
		request = false;
	}
	
	request = createXMLHttpRequest();
	request.open('GET', url, true);
	request.onreadystatechange = function() 
	{
		if(request.readyState == 4 && request.status == 200) 
		{
			 document.getElementById('test').innerHTML = request.responseText;
		}
	}
	request.send(null);
}

setInterval("getData('../data/4/update/kommandodatei.txt')",1000);
-->
</script>
</head>
<body onload="getData('../data/4/update/kommandodatei.txt');">
	<p id="test"></p>
</body>
</html>
 
Du hast bei der Interval-Funktion das "window" vergessen, was dafür zuständig ist, dass es in dem Fenster arbeitet. Und die Eigenschaft "onLoad" im Body-Tag ist damit auch sinnlos.
 
Hi,

also ich würde das onload drinlassen, aber statt eines setInterval ein setTimeout im onreadystatechange-Handler nehmen (sonst wird ja jede Sekunde ein Request abgesetzt, unabhängig davon, ob der letzte schon abgeschlossen war):

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"; charset=iso-"8859-1" />
<title>test</title>
<script type="text/javascript">
<!--
var request;

function createXMLHttpRequest() 
{

	var req;
			
	try 
	{
		if(window.ActiveXObject) 
		{
			for(i = 5; i; i--) 
			{
				try 
				{
					if(i == 2) 
					{
						req = new ActiveXObject( "Microsoft.XMLHTTP" );
					}
					else 
					{
						req = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
					}
					
					break;
				}
				catch(e) 
				{
					req = false;
				}
			}
		} 
		else if(window.XMLHttpRequest) 
		{
			req = new XMLHttpRequest();
			
			if(req.overrideMimeType) 
			{
					req.overrideMimeType('text/xml');
			}
		}
	} 
	catch(e)
	{
		req = false;
	}
	
	return req;
}

function getData(url) 
{
	if(request && request.readyState)
	{
		request.abort();
		request = false;
	}
	
	request = createXMLHttpRequest();
	request.open('GET', url, true);
	request.onreadystatechange = function() 
	{
		if(request.readyState == 4 && request.status == 200) 
		{
			 document.getElementById('test').innerHTML = request.responseText;
                         window.setTimeout("getData('../data/4/update/kommandodatei.txt')",1000);
		}
	}
	request.send(null);
}

-->
</script>
</head>
<body onload="getData('../data/4/update/kommandodatei.txt');">
	<p id="test"></p>
</body>
</html>

LG
 
Danke für die Tipps!
Hab das jetzt mal umgestellt und es funktioniert teilweise.

Das setTimeout oder setInterval funktioniert beides leider werden die Änderungen in der Textdatei aber erst sichtbar, nachdem ich meinen browsercache gelöscht habe. Gibt es eine Möglichkeit, den bei jedem Request automatisch zu leeren?
 
Ersetze die beiden
Code:
'../data/4/update/kommandodatei.txt'
durch
Code:
'../data/4/update/kommandodatei.txt?'+new Date().getTime()
...dann wird immer die aktuelle Version geholt.
 
Zurück