Webbrowser verarbeitet AJAX-Rückmeldung nicht mehr!

Warrior Naruto

Grünschnabel
Hallo!

Ich hab eine Webseite die mit Ajax Daten von einen Mini-Webserver, in einen entsprechenden Zyklus, aktualliesieren soll!

Das habe ich mit einen Javascript so realiesiert das ich eine Timer funktion habe die alle 0,3 Sekunden die Ajaxfunktion starte. Die Ajaxfunktion fragt dann die Daten von den Webserver dann ab und soll diese dann anzeigen.

Das funktioniert eine kurze Zeit. Aber sobald mehrer Antwort Telegramm verloren geht (z.b. überlastung des Mini-Webservers) Werden die Daten auf der Webseite nicht mehr aktualiesiet.

Ich hab mit Wireshark das Ethernet beobachtet.
Nach dem die Antwort Telegramme verloren gegangen sind wird weiterhin die Daten Angefragt. Auf diese Anfrage werden die Daten auch wieder von den Mini-Server an den Browser gesendet. Aber der Webbrowser aktualliesiert die Daten nicht mehr.

Ausprobiet habe ich das mit Firefox/3.0.10 und den IE6.0

Hier ist der Code für die Ajax anfragen un die Verarbeitung.

Code:
var req=false;
function makeReq(daten)
{
	url='http://#.#.#.#';
	req=false;
	if(window.XMLHttpRequest)
	{
		req=new XMLHttpRequest();
		if(req.overrideMimeType)
		{
			req.overrideMimeType('text/xml');
		}
	}
	else
	{
		if(window.ActiveXObject)
		{
			try
			{
				req=new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e)
			{
				try
				{
					req=new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e){}
			}
		}
	}
	if(!req)
	{
		alert('Giving up:(Cannot create an XMLHTTP instance');
		return false;
	}
	req.onreadystatechange=answer;
	req.open('POST',url+daten,true);
	req.send(null);
}

function answer()
{
	if(req.readyState==4)
	{
		if(req.status==200)
		{
			var Ausdruck=/(\d+\.?\d*[ \w]V), (\d+\.?\d*[ \w]A), (\d+\.?\d*[ \w]W), (\d+\.?\d*[ \w]V), (\d+\.?\d*[ \w]A), (\d+\.?\d*[ \w]W)/;
			var Ergebnis=Ausdruck.exec(req.responseText);
			if(Ergebnis)
			{
				document.getElementById('iU').value=Ergebnis[1];
				document.getElementById('iI').value=Ergebnis[2];
				document.getElementById('iP').value=Ergebnis[3];
				document.getElementById('sU').value=Ergebnis[4];
				document.getElementById('sI').value=Ergebnis[5];
				document.getElementById('sP').value=Ergebnis[6];
			}
			else
			{
				document.getElementById('Antwort').value+=req.responseText+'\n';
				document.getElementById('Antwort').scrollTop = document.getElementById('Antwort').scrollHeight;
			}
		}
		else
		{
			alert('There was a problem with the request.');
		}
	}
}

Hat vieleicht jemand ne Idee wie man das beheben kann?

mfg
Warrior Naruto

p.s. Ich hab jetzt nichts entsprechendes gefunden.Aber sollte schon ein Thema existieren was sich mit den Problem beschäftigt. Schicht mir nen Link und löscht diese Thema!
 
Ich vermute das ist das selbe problem wie ich hatte wegen dieser Cross Site - Sache...
Da die Domain / Subdomain / IP nicht dieselbe ist.
Was Sagt denn die Fehlerkonsole in Firefox?

MFG
Mark Paspirgilis
 
Hi,

Ich vermute das ist das selbe problem wie ich hatte wegen dieser Cross Site - Sache...
Da die Domain / Subdomain / IP nicht dieselbe ist.

wie kommst Du denn darauf? Das ist aus seinem Post doch gar nicht ersichtlich. Außerdem funktioniert das Aktualisieren ja prinzipiell.
Ich vermute eher, dass sich die Requests in die Quere kommen, da das Requestobjekt in einer globalen Variable gespeichert wird.

Sven hat ein kleines Tutorial geschrieben, wie man über mehrere parallel laufende Requests die Kontrolle behalten kann.

Ich würde Dir ansonsten noch empfehlen, den Timer ein wenig zu bremsen. Brauchst Du die Aktualisierung wirklich im 0,3s-Takt?

LG
 

Neue Beiträge

Zurück