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
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:
Vielleicht hat von euch ja jemand die zündende Idee?
Thanks
mfg
Dreambaser
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
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