Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Probleme mit Ajaxchat und Firefox (Ajax,Java,Php)

Mitglied: FeuerTeufel

FeuerTeufel (Level 1) - Jetzt verbinden

14.12.2009 um 02:54 Uhr, 7007 Aufrufe, 5 Kommentare

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

01.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
02.
<html> 
03.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
04.
<head> 
05.
<title>AJAX Chat</title> 
06.
<style type="text/css"> 
07.
.entry { 
08.
width: 100%; 
09.
background-color: #F5F5F5; 
10.
border: 1 dotted #666666; 
11.
font-family: Verdana; 
12.
13.
 
14.
.entry#small { 
15.
color: #CCCCCC; 
16.
17.
 
18.
</style> 
19.
<script type="text/javascript"> 
20.
var latestID = 0; //latestID als globale Variable 
21.
 
22.
//Funktion, mit der Anfragen nach neuesten Einträgen gesendet wird 
23.
function getLatestEntries() { 
24.
	if (httpGetLatestEntries.readyState == 4 || httpGetLatestEntries.readyState == 0) { //Anfrage senden, wenn Status der letzten Anfrage "completed" ist, bzw. "nicht initialisiert" (d.h. erster Aufruf) 
25.
  	httpGetLatestEntries.open("GET","http://www.ml-bkf.de/chat/ajaxchatx.php?action=getLatestEntries&latestID="+latestID, true); 
26.
    httpGetLatestEntries.onreadystatechange = handleHttpGetLatestEntries;  
27.
  	httpGetLatestEntries.send(null); 
28.
29.
30.
 
31.
//Behandelt die Serverantwort 
32.
function handleHttpGetLatestEntries() { 
33.
 
34.
  if (httpGetLatestEntries.readyState == 4) { 
35.
 
36.
    response  = httpGetLatestEntries.responseXML.documentElement;  
37.
	messages = response.getElementsByTagName('message'); 
38.
     
39.
	if(messages.length > 0) { //Anzeige nur, wenn mindestens eine neue Nachricht 
40.
		//document.write(messages.length); //Debug 
41.
		for (var i=messages.length-1; i>=0; i--) { 
42.
  			//Darstellung im Browser mit dem DOM 
43.
 		  	showEntry= document.getElementById("showEntries"); 
44.
			neuSpan = document.createElement('span'); 
45.
			neuSpan.setAttribute('class','entry'); 
46.
			neuSpan.setAttribute('className','entry'); //für den InternetExplorer 
47.
			neuSmall = document.createElement('small'); 
48.
			neuNameDate = document.createTextNode(messages[i].getElementsByTagName('date')[0].firstChild.nodeValue + ': ' + messages[i].getElementsByTagName('name')[0].firstChild.nodeValue +': '); 
49.
			neuSmall.appendChild(neuNameDate); 
50.
			neuSpan.appendChild(neuSmall); 
51.
			neuSpan.appendChild(document.createElement('br'));	 
52.
			neuNachricht = document.createTextNode(messages[i].getElementsByTagName('nachricht')[0].firstChild.nodeValue); 
53.
			neuSpan.appendChild(neuNachricht); 
54.
			neuSpan.appendChild(document.createElement('br')); 
55.
			showEntry.insertBefore(neuSpan, showEntry.firstChild);		 
56.
		 
57.
		}  
58.
		latestID = messages[0].getElementsByTagName('id')[0].firstChild.nodeValue; //Festlegung der neuen latestID 
59.
		//document.write(latestID); //Debug 
60.
61.
 
62.
    setTimeout('getLatestEntries();',4000); //Erneute Anfrage in vier Sekunden 
63.
  }  
64.
65.
 
66.
 
67.
 
68.
//neue Nachricht auf dem Server erzeugen 
69.
function createNewEntry(name, nachricht) { 
70.
	 
71.
	if (httpCreateNewEntry.readyState == 4 || httpCreateNewEntry.readyState == 0) { 
72.
	 url  = 'http://www.ml-bkf.de/chat/ajaxchatx.php?action=createNewEntry&name=' + name + '&nachricht=' + nachricht;     
73.
     httpCreateNewEntry.open("GET", url, true); 
74.
     httpCreateNewEntry.onreadystatechange = handleHttpCreateNewEntry; 
75.
   	 httpCreateNewEntry.send(); 
76.
77.
78.
 
79.
//behandelt die Antwort des Servers 
80.
function handleHttpCreateNewEntry() { 
81.
  if (httpCreateNewEntry.readyState == 4) { 
82.
  //nachdem eine neue Nachricht erfolgreich erzeugt wurde, wird diese angezeigt 
83.
  	getLatestEntries();    
84.
85.
86.
 
87.
function checkInput(name, nachricht) { 
88.
 
89.
if(name != "" && nachricht != "") { 
90.
createNewEntry(name, nachricht); 
91.
92.
else { 
93.
alert("Bitte sowohl einen Namen, als auch eine Nachricht eingeben!"); 
94.
95.
 
96.
 
97.
98.
 
99.
 
100.
function createXMLHttpReqObj() {  //erzeugt die XMLHttpRequest Objekte 
101.
  
102.
    // für Mozilla etc. 
103.
    if(window.XMLHttpRequest) { 
104.
    	try {  //Fehler abfangen 
105.
			req = new XMLHttpRequest();  
106.
        } catch(e) { 
107.
			req = false; 
108.
109.
    // für den InternetExplorer 
110.
    } else if(window.ActiveXObject) { 
111.
       	try { 
112.
        	req = new ActiveXObject("Msxml2.XMLHTTP"); 
113.
      	} catch(e) { 
114.
        	try { 
115.
          		req = new ActiveXObject("Microsoft.XMLHTTP"); 
116.
        	} catch(e) { 
117.
          		req = false; 
118.
119.
120.
121.
	return req; 
122.
123.
 
124.
 
125.
 
126.
// Initialisierung der beiden Objekte 
127.
var httpGetLatestEntries= createXMLHttpReqObj(); 
128.
var httpCreateNewEntry = createXMLHttpReqObj(); 
129.
 
130.
</script> 
131.
</head> 
132.
 
133.
<body onload="getLatestEntries()"> 
134.
<h1>AJAX Chat Anwendung</h1> 
135.
 
136.
<form name="form1" method="post" action=""> 
137.
  <p>Name<br> 
138.
    <input type="text" name="name" id="name"> 
139.
    <br> 
140.
    <br> 
141.
    Nachricht<br> 
142.
    <input type="text" name="nachricht" id="nachricht"> 
143.
  </p> 
144.
  <p> 
145.
    <input type="submit" name="Submit" value="Submit" onclick="checkInput(document.form1.name.value, document.form1.nachricht.value)" > 
146.
  </p> 
147.
</form> 
148.
<div id="showEntries"> 
149.
 
150.
</div> 
151.
</body> 
152.
</html> 
153.
 
und die ajaxchatx.php:
01.
<?php 
02.
 
03.
header( "Cache-Control: no-cache, must-revalidate" );  
04.
header( "Pragma: no-cache" ); 
05.
header("Content-Type: text/xml; "); 
06.
 
07.
$db_host = "localhost"; // Host  
08.
$db_user = ""; // User  
09.
$db_password = ""; // Passwort 
10.
$db_name = ""; // Datenbank  
11.
 
12.
mysql_connect($db_host,$db_user,$db_password) or die(mysql_error());  
13.
mysql_select_db($db_name) or die(mysql_error()); 
14.
 
15.
 
16.
function getLatestEntries($latestID) { 
17.
 
18.
 $query = "SELECT id, name, nachricht, date FROM ajaxchat WHERE id > $latestID ORDER BY id DESC LIMIT 20";  
19.
 $erg = mysql_query($query);  
20.
 echo "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>"
21.
 echo "<messages>"
22.
    while($erg2=mysql_fetch_array($erg))      
23.
     {  
24.
     echo "<message><id>".$erg2['id']; 
25.
     echo "</id><name>".$erg2['name']; 
26.
     echo "</name><nachricht>".$erg2['nachricht']; 
27.
     echo "</nachricht><date>".date("d.m.Y H:i",$erg2['date']); 
28.
     echo "</date></message>"
29.
 
30.
31.
echo "</messages>"
32.
 
33.
 
34.
35.
 
36.
function createNewEntry($name, $nachricht) { 
37.
 
38.
//HTML Tags entfernen 
39.
$name = strip_tags($name, ''); 
40.
$nachricht = strip_tags($nachricht,'');  
41.
 
42.
 
43.
$query = "INSERT INTO ajaxchat(name, nachricht, date)  
44.
VALUES ('$name','$nachricht','".time()."')"
45.
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
46.
if (!mysql_query($query)) { 
47.
//nicht notwendig, dient nur der Fehlerkontrolle 
48.
echo "<createNewEntry>0</createNewEntry>";} 
49.
else
50.
echo "<createNewEntry>1</createNewEntry>"
51.
52.
53.
 
54.
 
55.
 
56.
if ($_GET['action'] == "createNewEntry") { 
57.
 
58.
createNewEntry($_GET['name'], $_GET['nachricht']); 
59.
 
60.
61.
elseif ($_GET['action'] == "getLatestEntries") { 
62.
 
63.
getLatestEntries($_GET['latestID']); 
64.
 
65.
66.
 
67.
mysql_close(); 
68.
 
69.
?>
Hat jemand eine Ahnung woran das liegen könnte dass es mit dem Firefox nicht funktioniert?

Danke schonmal
und viele Grüße
Niklas
Mitglied: TheBob
14.12.2009 um 08:23 Uhr
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
Bitte warten ..
Mitglied: FeuerTeufel
14.12.2009 um 12:39 Uhr
Wenn ich das GET in Zeile 25 und 73 in POST ändere:

01.
httpGetLatestEntries.open("POST","http://www.ml-bkf.de/system/ajaxchatx.php?action=getLatestEntries&latestID="+latestID, true);
sowie in der PHP-Datei

01.
if ($_POST['action'] == "createNewEntry") { 
02.
 
03.
createNewEntry($_POST['name'], $_POST['nachricht']); 
04.
05.
elseif ($_POST['action'] == "getLatestEntries") { 
06.
 
07.
getLatestEntries($_POST['latestID']); 
08.
 
09.
10.
 
schreibe, dann geht gar nichts mehr. Weder im InternetExplorer noch im Firefox. Dann kann man weder Messages speichern noch lesen.
Bitte warten ..
Mitglied: TheBob
14.12.2009 um 13:18 Uhr
Ich dachte auch nur in der htm-Datei ändern, da du die Parameter ja weiterhin per GET übergibst. Hilft das auch nicht?
Bitte warten ..
Mitglied: FeuerTeufel
14.12.2009 um 15:28 Uhr
Das habe ich gerade ausprobiert, POST hat keine auswirkung - selber Fehler wie bei GET.

Ich habe es jetzt malauf POST gelassen - müsste dann bei dir genauso wenig im Firefox funktionieren.
Bitte warten ..
Mitglied: FeuerTeufel
16.12.2009 um 03:43 Uhr
Also ich fass das ganze jetzt nochmal zusammen. Es handelt sich um das oben gepostete Script - in der ajaxchat.htm habe ich Zeile 25 und 73 auf POST geändert.

Mit dem InternetExplorer funktioniert der Chat einwandfrei (nur der Seitenreload beim Senden stört auf der Homepage (www.ml-bkf.de) etwas. Das beeinträchtigt aber nicht die Funktion.


Der Fehler im Firefox ist kurios:
Wenn man den Chat öffnet (http://www.ml-bkf.de/chat/ajaxchat.htm ), zeigt er zwar alle Messages an, speichert aber keine wenn man welche sendet.

Er speichert ebenfalls keine Messages, wenn ein anderer oder man selbst kurz zuvor eine Message an den Chat gesendet/gespeichert hat.

Wartet man hingegen 10-80 Minuten, funktionert das Senden einmalig - danach muss man wieder 10-80 Minuten warten - erst dann kann man wiederholt eine Message an den Chat senden. Mal funktioniert es schon nach 10 Minuten, mal dauert es über eine Stunde. In der Zwischenzeit werden die Messages die man speichern will einfach ignoriert.

Wenn er die Seite wirklich aus dem Cache holt, warum funktioniert es denn nach der genannten Wartezeit im intervall, aber nicht unmittelbar nach dem Seitenaufruf. Das ergibt kein Sinn. Was ist nach 10 bis 80 Minuten Wartezeit anders als vorher?

Bis jetzt scheint es keine Lösung zu geben...
Bitte warten ..
Ähnliche Inhalte
Webentwicklung

AJAX-PHP durch WebRTC für Datenaustausch ersetzen?

Frage von mabue88Webentwicklung1 Kommentar

Hallo zusammen, ich habe einen XAMPP Server laufen. Vom Server werden bislang lediglich Daten in Form von Strings an ...

Webbrowser

Firefox 52 und Java (Workaround)

Tipp von ChriBoWebbrowser12 Kommentare

Hi, falls jemand auch dringend Java in Firefox 52 benötigt gibt es zwei Workarounds: 1. Wechsel von Firefox Standard ...

JavaScript

Dropdownfeld auslesen und mit AJAX und JS an PHP senden

gelöst Frage von ITFloriJavaScript7 Kommentare

Hallo zusammen, ich versuche gerade die Auswahl eines Dropdown Menüs in eine Variable schreiben zu lassen und Sie mir ...

Webbrowser

Netgear GS724Tv4 VS Firefox und Java

Frage von ProfilkillerWebbrowser2 Kommentare

Hallo, seit Tagen versuche ich und der Netgear Support auf meinem Windows 10 Home (64bit) Laptop Firefox (59.0.2 64bit), ...

Neue Wissensbeiträge
Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 9 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 15 StundenWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 19 StundeniOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 2 TagenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++34 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless25 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

Windows Server
Alten DC entfernen
Frage von smartinoWindows Server24 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...