AJAX Div reloaden ohne das man es mitbekommt

Andre_d

Mitglied
hallo zusammen,

ich habe eine Frage und zwar habe ich anhand eines Videotutorials eine kleine Shoutbox mit AJAX in Verbindung mit PHP/MySQL gebaut.

Hier der Javascript-code

Code:
var reloading_sb = "10000";

function readReq() {
       resObjekt.open('get', 'readshout.php?date' + new Date(),true);
       resObjekt.onreadystatechange = handleResponse2;
       resObjekt.send(null);
}

function handleResponse2(){
	var text="";
    document.getElementById("readshout").style.visibility = "visible";
	if(resObjekt.readyState == 4) {
		meinJSONObjekt = eval ( "(" + resObjekt.responseText + ")" );
		for(i = 0; i < meinJSONObjekt.ergebnis.length; i++) {
			text += "<!---- JSON inhalte welche aus der DB geladen wurden ---->";
		}
	}else{
	text = "<img src='loading.gif' /> loading...";	
	document.getElementById("readshout").innerHTML = text;	
	}
}

window.setInterval("readReq()", reloading_sb);

Nun ist es so, wenn ich die function in Intervalen aufrufe, das man es quasi sieht. Klar sieht man es, ich habe ja auch ein loading.gif eingebaut.
Aber ich habe bereits Shoutboxen gesehen, wo wenn man etwas geschrieben hat, der geschriebene Text sofort zu sehen ist.

Und man hat nicht so diesen Reload-Blink-Effekt. wenn ich das mal so nennen darf! :D

vieleicht liegt das auch an der Art mein Script in intervalen aufzurufen?

Würde mich um Rat freuen!

MfG
André
 
Hallo,

mein Ansatz wäre:
Wenn die Site das erste mal aufgerufen wird in der Db nachsehen, wieviele Beiträge in der DB sind (via fortlaufender ID kein problem)
Dem JS-Skript
1) die letzten 5 Beiträge
2) Anzahl der Beiträge( mittels ID)
dem JS-Skript zurückgeben.

Im Intervall:
Per Ajax dann an das serverseitige Skript die verfügbare ID senden.
Das Serverseitige Skript soll dann nachsehen, ob es seit dem neue Einträge gibt und die dann ggf. per XML zurückgeben.

Aus der Anzahl der XML Ergebnise dann die aktuelle ID generieren (ID + Anzahl neuer einträge) und nach kurzer zeit mit der neuen ID anfragen ob neue Einträge vorhanden sind.

Die Einträge lasse sich ja dann über JS bequem an die aktuellen schon angezeigten Einträge anhängen.

Ich hoffe, dass ich dir weiterhelfen konnte.

Viele Grüße

Marcel
 
Zuletzt bearbeitet:
Hallo marcel,

momentan ist es so, das alles nicht in xml in der datenbank gespeichert wurde.
Ist es dennoch möglich die datensätze, wenn neue vorhanden sind, "hinten dran zu hängen" oder ist es einer der Vorteile xml in der SB zu speichern?

Danke Dir schonmal! :)

viele Grüße
André
 
Hi André,

wie die Daten in der DB gespeichert sind, ist an sich egal.

Wichtig wäre, dass das PHP Skript die Ergebnisse aus der Datenbank XML konform zurückgibt (wobei man das nicht zwanghaft mit xml lösen muss.)

Ein "allgemeiner Code" zum anhängen neuer Daten:

Code:
// Erstelle neues Element
var neuerBeitrag = document.createElement("div");

// Weise neuem Element Inhalt zu
neuerBeitrag.innerHTML = text ;

// Füge das neue Element der Shoutbox hinzu
document.getElementById("readshout").appendChild(neuerBeitrag);

Hoffe, dass ich helfen konnte ;-)

Grüße ausm Süden Deutschlands

Marcel
 

Neue Beiträge

Zurück