TXT-Datei permanent öffnen ... ?

chpo

Grünschnabel
Ich schreibe gerade an einer Java-Serve-Client-Applikation und einem Webportal, welche miteinander zusammen arbeiten.

Das Funktioniert so, die Server-Client-Applikation übernimmt dabei die Datenübermittlung zwischen dem Server und Client lediglich die Auswahl was an den Client geschickt werden soll wir über ein Webportal ausgewählt. Ebenso wird darin angezeigt wie weit die Übermittlung abgeschlossen ist. (eine Art von ProgressBar).

Der Übermittlungsstatus permanent von der JAVA Applikation in eine Textdatei geschrieben. Derzeit wird diese dann mit PHP ausgelesen und angezeigt. Damit das ganze immer aktuell ist wird die Seite alle paar Sekunden neu geladen. Dabei entsteht aber leider ein "flackern".

Gäbe es hierfür eine andere Möglichkeit mit PHP oder anderen Scriptsprachen - ohne dabei ein "flackern" zu sehen?
 
Ich würde dir raten, dass du den Inhalt mit Ajax ausliest. Also du erstellst eine request.php welche dann mit echo den Inhalt aus der Textdatei ausliest und dann schreibst du auf deiner eigentlichen Seite einen kleinen Ajax-Request zu der Seite der in gewissen Abständen nur den Teil aktualisiert, der aktuelisiert werden soll. Das geht mit dem JavaScript-Befehl setInterval(...).

Hoffe dir geholfen zu haben
 
An sowas hätte ich auch schon gedacht - hab das schon irgendwo mal gesehen!
Nur leider hab ich überhaupt keinen Dunst wie das funktioniert!?
Gibt zu diesem Thema gute Quellen im Internet? Hab absolut keine Ahnung mehr, wonach ich noch suchen soll?
 
Also wie die request.php aussieht müsstest du wissen und den Teil deiner Website müsste dann so aussehen:

HTML:
<html>
<head>
<title>Meine Website</title>
<script type="text/javascript">
var request = false;

// Request
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)
     {}
   }
 }

function setRequest()
 {
  if(!request)
   {
    alert(("Kann keine XMLHTTP-Instanz erzeugen");
    return false;
   }
   else
   {
    var url = "request.php";
    
    request.open('post', url, true);
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    request.send('');
    request.onreadychange = getRequest;
   }
 }

function getRequest()
 {
  switch(request.readyState)
   {
    case 4;
    
    if(request.status != 200)
     {
      alert("Der Requestwurde abgeschlossen, ist aber fehlerhaft!");
     }
     else
     {
      document.getElementById('fieldname').innerHTML = request.responseText;
     }
   }
 }

window.setInterval("getRequest();", 300);
</script>
</head>
<body>
<div id="fieldname"></div>
</body>
</html>
 
Zuletzt bearbeitet:
Also nachdem ichs so wie vorhin beschrieben nicht hinbekommen hab, hab ich das ganze mal etwas anders versucht zu lösen....

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>

Das öffnen und ausgeben des Textes aus der Textdatei funktioniert damit ja schon recht gut, nur funktioniert hierbei das setInterval anscheinend nicht bzw. wenn ich etwas in der Datei geändert habe sehe ich die Änderung nur dann, wenn ich die Seite schließe und wieder neu aufrufe. Durch einen Reload der Seite wird die Änderung auch nicht sichtbar.

:confused:
 
Ist ja auch klar: 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.
 
Zurück