Probleme mit Ajaxchat und Firefox (Ajax,Java,Php)
Hallo, ich bin seit ein paar Tagen an einem Ajaxchat dran und mit dem Firefox klappt es nicht.
Hier ist der Chat im Original-Quellcode zu finden wie ich ihn durch Google gefunden habe:
http://www.ml-bkf.de/chat/ajaxchat.htm
Das Problem ist folgendes: Ich kann mit dem InternetExplorer ganz normal Messages speichern (nur bei Sonderzeichen macht es noch Probleme) - da funktioniert es ohne Probleme.
Aber mit dem Firefox geht es nicht. Er öffnet die Messages zwar, aber er speichert nur selten etwas in die Datenbank (siehe Chatverlauf). Es dauert also manchmal 40-50 Minuten, bis ich mit dem Firefox wieder eine Messages im Chat senden kann (und diese auch gespeichert wird) - vorher ignoriert er das Senden einfach. Das könnt ihr ja gerne mal ausprobieren.
Man kann also nicht unmittelbar nach dem Senden einer Message erneut eine Message absenden, man muss ne längere Zeit warten. Mal geht es nach 10 Minuten wieder, dann dauerts auch mal ne ganze Stunde.
Es handelt sich um einen Ajaxchat mit einer ajaxchat.htm mit dem Formular und dem Javascript und eine ajaxchatx.php mit dem ausführenden Php-Code zum speichern in die Datenbank.
Durch ausrufen der Php-Datei kann man direkt einen Eintrag in die Datenbank erzeugen, das funktioniert auch Problemlos:
http://www.ml-bkf.de/system/ajaxchatx.php?action=createNewEntry&nam ...
Folgende URL ruft die Einträge aus der Datenbank ab:
http://www.ml-bkf.de/system/ajaxchatx.php?latestID=1&action=getLate ...
Hier ist noch der Code:
ajaxchat.htm
und die ajaxchatx.php:
Hat jemand eine Ahnung woran das liegen könnte dass es mit dem Firefox nicht funktioniert?
Danke schonmal
und viele Grüße
Niklas
Hier ist der Chat im Original-Quellcode zu finden wie ich ihn durch Google gefunden habe:
http://www.ml-bkf.de/chat/ajaxchat.htm
Das Problem ist folgendes: Ich kann mit dem InternetExplorer ganz normal Messages speichern (nur bei Sonderzeichen macht es noch Probleme) - da funktioniert es ohne Probleme.
Aber mit dem Firefox geht es nicht. Er öffnet die Messages zwar, aber er speichert nur selten etwas in die Datenbank (siehe Chatverlauf). Es dauert also manchmal 40-50 Minuten, bis ich mit dem Firefox wieder eine Messages im Chat senden kann (und diese auch gespeichert wird) - vorher ignoriert er das Senden einfach. Das könnt ihr ja gerne mal ausprobieren.
Man kann also nicht unmittelbar nach dem Senden einer Message erneut eine Message absenden, man muss ne längere Zeit warten. Mal geht es nach 10 Minuten wieder, dann dauerts auch mal ne ganze Stunde.
Es handelt sich um einen Ajaxchat mit einer ajaxchat.htm mit dem Formular und dem Javascript und eine ajaxchatx.php mit dem ausführenden Php-Code zum speichern in die Datenbank.
Durch ausrufen der Php-Datei kann man direkt einen Eintrag in die Datenbank erzeugen, das funktioniert auch Problemlos:
http://www.ml-bkf.de/system/ajaxchatx.php?action=createNewEntry&nam ...
Folgende URL ruft die Einträge aus der Datenbank ab:
http://www.ml-bkf.de/system/ajaxchatx.php?latestID=1&action=getLate ...
Hier ist noch der Code:
ajaxchat.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<head>
<title>AJAX Chat</title>
<style type="text/css">
.entry {
width: 100%;
background-color: #F5F5F5;
border: 1 dotted #666666;
font-family: Verdana;
}
.entry#small {
color: #CCCCCC;
}
</style>
<script type="text/javascript">
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://www.ml-bkf.de/chat/ajaxchatx.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').firstChild.nodeValue + ': ' + messages[i].getElementsByTagName('name').firstChild.nodeValue +': ');
neuSmall.appendChild(neuNameDate);
neuSpan.appendChild(neuSmall);
neuSpan.appendChild(document.createElement('br'));
neuNachricht = document.createTextNode(messages[i].getElementsByTagName('nachricht').firstChild.nodeValue);
neuSpan.appendChild(neuNachricht);
neuSpan.appendChild(document.createElement('br'));
showEntry.insertBefore(neuSpan, showEntry.firstChild);
}
latestID = messages.getElementsByTagName('id').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://www.ml-bkf.de/chat/ajaxchatx.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();
</script>
</head>
<body onload="getLatestEntries()">
<h1>AJAX Chat Anwendung</h1>
<form name="form1" method="post" action="">
<p>Name<br>
<input type="text" name="name" id="name">
<br>
<br>
Nachricht<br>
<input type="text" name="nachricht" id="nachricht">
</p>
<p>
<input type="submit" name="Submit" value="Submit" onclick="checkInput(document.form1.name.value, document.form1.nachricht.value)" >
</p>
</form>
<div id="showEntries">
</div>
</body>
</html>
und die ajaxchatx.php:
<?php
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );
header("Content-Type: text/xml; ");
$db_host = "localhost"; // Host
$db_user = ""; // User
$db_password = ""; // Passwort
$db_name = ""; // Datenbank
mysql_connect($db_host,$db_user,$db_password) or die(mysql_error());
mysql_select_db($db_name) or die(mysql_error());
function getLatestEntries($latestID) {
$query = "SELECT id, name, nachricht, date FROM ajaxchat WHERE id > $latestID ORDER BY id DESC LIMIT 20";
$erg = mysql_query($query);
echo "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>";
echo "<messages>";
while($erg2=mysql_fetch_array($erg))
{
echo "<message><id>".$erg2['id'];
echo "</id><name>".$erg2['name'];
echo "</name><nachricht>".$erg2['nachricht'];
echo "</nachricht><date>".date("d.m.Y H:i",$erg2['date']);
echo "</date></message>";
}
echo "</messages>";
}
function createNewEntry($name, $nachricht) {
//HTML Tags entfernen
$name = strip_tags($name, '');
$nachricht = strip_tags($nachricht,'');
$query = "INSERT INTO ajaxchat(name, nachricht, date)
VALUES ('$name','$nachricht','".time()."')";
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";
if (!mysql_query($query)) {
//nicht notwendig, dient nur der Fehlerkontrolle
echo "<createNewEntry>0</createNewEntry>";}
else {
echo "<createNewEntry>1</createNewEntry>";
}
}
if ($_GET['action'] == "createNewEntry") {
createNewEntry($_GET['name'], $_GET['nachricht']);
}
elseif ($_GET['action'] == "getLatestEntries") {
getLatestEntries($_GET['latestID']);
}
mysql_close();
?>
Hat jemand eine Ahnung woran das liegen könnte dass es mit dem Firefox nicht funktioniert?
Danke schonmal
und viele Grüße
Niklas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 131605
Url: https://administrator.de/contentid/131605
Ausgedruckt am: 23.11.2024 um 02:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Niklas,
eventuell könnte es daran liegen, dass der Firefox die Seite aus dem Cache holt und gar keinen neuen Request an den Server stellt. Das darf er, da es sich um eine GET-Anfrage handelt.
Vielleicht hilft es, wenn du in der "ajaxchat.htm" das GET in Zeile 25 durch ein POST erstetzt.
Viele Grüße
TheBob
eventuell könnte es daran liegen, dass der Firefox die Seite aus dem Cache holt und gar keinen neuen Request an den Server stellt. Das darf er, da es sich um eine GET-Anfrage handelt.
Vielleicht hilft es, wenn du in der "ajaxchat.htm" das GET in Zeile 25 durch ein POST erstetzt.
Viele Grüße
TheBob