var latestID = 0; //latestID als globale Variable
//Funktion, mit der Anfragen nach neuesten Einträgen gesendet wird
function getLatestEntries() {
if (httpGetLatestEntries.readyState == 4 || httpGetLatestEntries.readyState == 0) { //Anfrage senden, wenn Status der letzten Anfrage "completed" ist, bzw. "nicht initialisiert" (d.h. erster Aufruf)
httpGetLatestEntries.open("GET","http://localhost/ajax/ajaxchat.php?action=getLatestEntries&latestID="+latestID, true);
httpGetLatestEntries.onreadystatechange = handleHttpGetLatestEntries;
httpGetLatestEntries.send(null);
}
}
//Behandelt die Serverantwort
function handleHttpGetLatestEntries() {
if (httpGetLatestEntries.readyState == 4) {
response = httpGetLatestEntries.responseXML.documentElement;
messages = response.getElementsByTagName('message');
if(messages.length > 0) { //Anzeige nur, wenn mindestens eine neue Nachricht
//document.write(messages.length); //Debug
for (var i=messages.length-1; i>=0; i--) {
//Darstellung im Browser mit dem DOM
showEntry= document.getElementById("showEntries");
neuSpan = document.createElement('span');
neuSpan.setAttribute('class','entry');
neuSpan.setAttribute('className','entry'); //für den InternetExplorer
neuSmall = document.createElement('small');
neuNameDate = document.createTextNode(messages[i].getElementsByTagName('date')[0].firstChild.nodeValue + ': ' + messages[i].getElementsByTagName('name')[0].firstChild.nodeValue +': ');
neuSmall.appendChild(neuNameDate);
neuSpan.appendChild(neuSmall);
neuSpan.appendChild(document.createElement('br'));
neuNachricht = document.createTextNode(messages[i].getElementsByTagName('nachricht')[0].firstChild.nodeValue);
neuSpan.appendChild(neuNachricht);
neuSpan.appendChild(document.createElement('br'));
showEntry.insertBefore(neuSpan, showEntry.firstChild);
}
latestID = messages[0].getElementsByTagName('id')[0].firstChild.nodeValue; //Festlegung der neuen latestID
//document.write(latestID); //Debug
}
setTimeout('getLatestEntries();',4000); //Erneute Anfrage in vier Sekunden
}
}
//neue Nachricht auf dem Server erzeugen
function createNewEntry(name, nachricht) {
if (httpCreateNewEntry.readyState == 4 || httpCreateNewEntry.readyState == 0) {
url = 'http://localhost/ajax/ajaxchat.php?action=createNewEntry&name=' + name + '&nachricht=' + nachricht;
httpCreateNewEntry.open("GET", url, true);
httpCreateNewEntry.onreadystatechange = handleHttpCreateNewEntry;
httpCreateNewEntry.send();
}
}
//behandelt die Antwort des Servers
function handleHttpCreateNewEntry() {
if (httpCreateNewEntry.readyState == 4) {
//nachdem eine neue Nachricht erfolgreich erzeugt wurde, wird diese angezeigt
getLatestEntries();
}
}
function checkInput(name, nachricht) {
if(name != "" && nachricht != "") {
createNewEntry(name, nachricht);
}
else {
alert("Bitte sowohl einen Namen, als auch eine Nachricht eingeben!");
}
}
function createXMLHttpReqObj() { //erzeugt die XMLHttpRequest Objekte
// für Mozilla etc.
if(window.XMLHttpRequest) {
try { //Fehler abfangen
req = new XMLHttpRequest();
} catch(e) {
req = false;
}
// für den InternetExplorer
} else if(window.ActiveXObject) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
req = false;
}
}
}
return req;
}
// Initialisierung der beiden Objekte
var httpGetLatestEntries= createXMLHttpReqObj();
var httpCreateNewEntry = createXMLHttpReqObj();
AJAX Chat Speiser