Vorgeschichte:
Ich wollte eine Website mit einem Chatroom basteln.
Mit der Website ansich gabs keine Probleme, auch mit dem Chatroom nicht, jedoch brauchte ich eine Möglichkeit um die Nachrichten des Chatfensters zu aktualisieren.
Da ich mich nicht besonders mit javaScript auskenne (und mit AJAX schon garnicht), habe ich mal mit einem Iframe rumprobiert.
Dabei rausgekommen:
Ich habe zwei Seiten angelegt, zum einen die eigentliche Webseite des Chats (ich nenne sie jetzt mal chat.html) und eine, welche die Nachrichten aufruft (chatprotocol.php).
Jetzt habe ich auf chat.html ein Iframe gesetzt welches chatprotocol.php einbettet. Im Head des Chatprotocols habe ich einen META-Tag, der eigentlich eine Weiterleitung bewirkt, in dem Fall aber sich selbst erneut aufruft, nach 7 Sekunden.
Jetzt rufe ich also chat.html auf und habe dort ein Fenster (iframe) welches sich alle 7 Sekunden neu lädt, und somit die Nachrichten welche das Chatprotocol per PHP ausgibt ständig aktualisiert.
Meine Frage an euch: Was haltet ihr von dieser Methode zum Aktualisieren?
Habe auch nach den Nachteilen der Frames gegoogelt, die Gefundenen aber nicht unbedingt für zuuuu schlecht für den Chatroom empfunden.
Meint ihr das ist eine akteptabele Lösung?
Eleganter wäre es natürlich mit AJAX, ist eigentlich auch garnicht schwer.
Dieses PHP-Script holt sich die Daten aus einer MySQL-Datenbank, oder? Und alles wird dann per „echo“ ausgegeben, oder?
Aber du weist sicher wie man JavaScript einbindet und aufruft, oder?
Das mit dem AJAX ist ganz einfach (bitte keine Kommentare, weil ich keine OnreadyState und so verwende).
Ich kann mir vorstellen, dass die Seite für alle Browser sein soll (ob es mit dem IE geht musst du dann ausprobieren, da es auf dem Mac keinen IE gibt ;-)), deswegen müssen wir 2 XMLHttpRequests erstellen.
Dann öffnen wir mit diesem request unsere PHP-Datei und können gegebenenfalls auch Parameter übergeben, was wir aber in unseren Fall nicht brauchen. Nun müssen wir nur noch die Antwort in die Seite einfügen.
Damit alle 7 oder 10 Sekunden der Chat aktualisiert wird, brauchen wir noch eine zweite Funktion, welche dieses kontrolliert.
Das ganze sieht dann so aus:
[HTML]
function getChat(){
if (window.ActiveXObject || document.all) {
// Internet Explorer
request = new ActiveXObject(„Msxml2.XMLHTTP“);
}
else {
// Mozilla und andere Browser
request = new XMLHttpRequest();
}
request.open("GET", "chat.php", false); //Hier die PHP-Datei angeben
request.send(null);
antwort = request.responseText;
document.getElementByID('div').innerHTML = antwort; //Anstatt 'div' muss hier der Bereich angeben werden, in den Alles geladen werden soll
}
function chatController(){
setTimeout(‚getChat()‘, 10000); //Hier muss die Zeit in Millisekunden angegeben werden (10000 → 10 sek.
}
[/HTML]
Mit folgendem kannst du Alles aufrufen:
Wow super geil! Danke!
Werde den code gleich mal einbauen.
Die Nachrichten schicke ich über ein normales Forumlar ab. Die Daten werden alle per PHP verarbeitet.
Da es ein sich selbst aufrufendes Formular ist und der Chat sofort wieder angezigt wird, glaube ich ein zusätzliches JavaScript wird dafür nicht nötig sein.