Hilfe mein Refresh funktioniert nicht

dreambaser

Erfahrenes Mitglied
Hallo Leute,

ich brauch unbedingt einmal eure hilfe. Ich habe folgendes gebastelt. Eine Div Container, der nach einer bestimmten Zeit über XMLHTTPREQUEST aus einer PHP Datei die Daten neu anfordert, ob neue Nachrichten vorliegen.

Soweit kein Thema abba nu kommts :confused:

Beim ersten mal Daten anfordern, werde diese wie gewohnt einmal angezeigt.
Bei allen anderen Anfragen werden diese immer hochgezählt. Sprich die Daten werden nicht aus der Variablen gelöscht, sondern werden immer weiter geschrieben. Also praktisch so:

1. Message: User hat nachricht hinterlassen.
1. Message: User hat nachricht hinterlassen.
1. Message: User hat nachricht hinterlassen.
1. Message: User hat nachricht hinterlassen.

usw.

Ich wollte es aber so machen, das praktisch immer alle einträge aus javascript gelöscht werden und dann wieder neu angezeigt werden. Hier mal mein Script:


Code:
	// Lade Einträge alle x Sekunden
	var aktiv = setInterval("loadData()",12000);
	
	// Lade Einträge der Shoutbox
	setTimeout('loadData();',1000);
	
	// Setzen der Vaiable damit der Chat nicht zum DOS wird
	var dosProtect = 0;
	
	// Beendet die asb_loading-Anzeige
	function asb_loadingEnd(){
	 
		document.getElementById("asb_loading").innerHTML=''; // Das ist die Loadinganzeige
	
	}

// Funktion zum Laden der Einträge
function loadData() {
	
 		document.getElementById("asb_loading").innerHTML=image; // Zeige Ladeanzeige an
 
 var xmlHttp = false;
 
 // XML HttpRequest-Instanz für IE < Version 6 erstellen
 
 	try {
  
  		xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
 	
	} catch(e) {
  
  	try {
   
   		xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
  	
	} catch(e) {
		
   		xmlHttp  = false;
  	}
 }
 // XML HttpRequest-Instanz für für Mozilla, Opera, Safari usw. erstellen
 if (!xmlHttp  && typeof XMLHttpRequest != 'undefined')
 {
  xmlHttp = new XMLHttpRequest();
 }

 // Wenn Status entsprechend führe Aktion durch
 if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
 {
  // Führe Aktion aus
  xmlHttp.open('GET', url, true);
  // Sobald sich der Zustand ändert führe Aktion aus.
  xmlHttp.onreadystatechange = function ()
  {
   if (xmlHttp.readyState == 4)
   {
    // Dos Variable erhöhen
    dosProtect = dosProtect + 1;

    var response=xmlHttp.responseText;

	
	
	
	if (response.length>0) {
	
	//document.getElementById("asb_content").innerHTML+=response;
	
	
     // in erster Zeile steht der Timestamp -> extrahieren
	 zeilen=response.split("<br>");
	 last_request=zeilen[0];
	 var anzahl_zeilen=zeilen.length;
	 for (i=1;i<anzahl_zeilen;i++)
	 {
	 
	  document.getElementById("asb_content").innerHTML+=zeilen[i];
	  
	  if (i<anzahl_zeilen-1) document.getElementById("asb_content").innerHTML+='<br>'; // Zeige Inhalte im Content
	 }
	}
	
	

	
    if(dosProtect >= 5)
    {
     // Meldung nach 50 Aufrufen ohne Interaktion
   //  var dosProtectText = '<div class="error">Fehler! Verbindung wurde getrennt.';
  
     document.getElementById("asb_content").innerHTML = dosProtectText;
     
	 clearInterval(aktiv);
    }
   }
  
  }
  
 
  xmlHttp.send(null);
 }
 // asb_loading Anzeige beenden
 setTimeout('asb_loadingEnd();',1000);
}

Vielleicht hat von euch ja jemand die zündende Idee?

Thanks

mfg
Dreambaser
 
Hi,

das wird wohl daran liegen, dass Du in der for-Schleife die Zeilen per "+=" anhängst. Entweder Du leerst den Inhalt vorher, oder Du ersetzt die for-Schleife einfach durch

Javascript:
document.getElementById("asb_content").innerHTML = zeilen.join("<br>");

LG
 
Zuletzt bearbeitet von einem Moderator:
OH man :rolleyes:

tja da sieht man mal wieder, das man kleine Dinge sehr schnell übersieht.

Ich danke dir ... :D^^

mfg
Dreambaser
 

Neue Beiträge

Zurück