ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
600
600
EMPFEHLEN
-
Hi,
ich habe ein kleines Problem mit einem Chatroom. Ich benutzte PHP + Mysql um die Nachrichten zu speichern und Javascript um sie mittels Ajax zu versenden.
Alle 5 Sekunden gibt es einen autorefresh und wenn man eine Nachricht sendet wird zusätzlich refreshed (über Ajax).
Das ganze liegt auf einem Webserver, also nicht lokal bei mir.
Alles funktioniert soweit gut. Zumindest mit meinen Browern (MSIE 6 & Mozilla 5).
Gehe ich jetzt aber zu einem Freund and den Computer, der exakt die selbe Version des Browsers hat, gibt es folgenden Fehler:
Der Chatteilnehmer öffnet den Chat und Ihm werden die letzten 100 Nachrichten angezeigt. Bei mir ist es so, wie man es von einem normalen chat erwartet: ich schreibe eine Nachricht und sie kommt ein bisschen zeitverzögert im Chatfenster an. Bei einigen anderen ist es aber so, dass die Nachricht auch angezeigt wird, dann aber bei dem nächsten Autorefresh verschwindet und nurnoch der Text angezeigt wird der beim öffnen des Chatrooms schon angezeigt wurde. (die letzten 100 Zeilen)
Da es bei mir funktioniert kann es nicht am PHP Teil des ganzen liegen, da ich sonst auch unvollständige Chats bekommen würde, was nicht der Fall ist.
Ich vermute das es etwas mit cashing oder ähnlichem zu tun haben muss, finde aber keine Lösung. Teilweise hatte ich den Eindruck dass die POST bz. GET Methoden in unterscheidlichen Browsern besser funktionieren, aber das kann auch nur ein falschen gefühl gewesen sein.
Ich würde mich sehr freuen wenn mir jemand einen Tipp geben könnte, wie ich es hinbekomme das immer der gesamte bisherige Chatlog ausgegeben wird.
Vielen Dank
Hier sind nochmal die wichtigen Javafunktionen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
var partyID = <? echo $_REQUEST['pid']; ?>; var serverID = <? echo $_REQUEST['sid']; ?>; var charName = "<? echo urldecode($_REQUEST['name']); ?>"; var requestObject = false; var sendMethod = ""; function createRequestObject() { try { requestObject = new XMLHttpRequest(); sendMethod = "GET"; } catch (trymicrosoft) { try { requestObject = new ActiveXObject("Msxml2.XMLHTTP"); sendMethod = "POST"; } catch (othermicrosoft) { try { requestObject = new ActiveXObject("Microsoft.XMLHTTP"); sendMethod = "POST"; } catch (failed) { requestObject = false; } } } if(!requestObject) { alert("Fehler beim Initialisieren des Chats!"); } } function sendText(text) { if(requestObject) { var url = ""; if(text=="" || text==null) { url = "chat.php?pid=" + partyID + "&sid=" + serverID + "&name=" + charName; } else { url = "chat.php?pid=" + partyID + "&sid=" + serverID + "&name=" + charName + "&msg=" + escape(text); } if(requestObject.overrideMimeType) { requestObject.overrideMimeType('text/xml'); } requestObject.open(sendMethod, url, true); requestObject.onreadystatechange = updateChat; requestObject.send(null); } else { alert("requestObject not ready"); } } function updateChat() { if(requestObject.readyState == 4 && requestObject.status == 200) { var chat = document.getElementById("chatWindow"); var members = document.getElementById("chatMembers"); var content = requestObject.responseText.split('|'); members.innerHTML = ""; chat.innerHTML = ""; for(i=0; i<content.length-1; i++) { members.innerHTML += content[i] + "<BR>"; } chat.innerHTML = content[i]; chat.scrollTop = chat.scrollHeight; } }
-
27.07.06 17:30 #2
Die Vermutung mit dem Cache finde ich naheliegend, hate ein ähnliches Problem mit einer Statusanzeige die sich nicht verändert hat.
Versuche im PHP Script mal folgendes ganz oben...
Übrigens... was machste wenn ein User ein | im Namen hat, oder im Text postet ?PHP-Code:// bei mir hab ich XML gesendet...
// header( "Content-type: text/xml" );
header( "Cache-Control: no-cache, must-revalidate" ); // HTTP/1.1
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
Wäre es nicht sinnvoller über XML zu gehen und dann den requestObject.responseXML auszulesen ?Geändert von Exceptionfault (27.07.06 um 17:36 Uhr)
liebe Grüße
Exceptionfault (http://exceptionfault.de)
Never say: "Always"! Always say: "Never say never"! - Tom Kyte @ Ask Tom Live in Berlin 2008
Ähnliche Themen
-
Problem mit AJAX-Chat
Von Sasser im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 14.03.10, 23:10 -
Ajax/PHP Chat Problem
Von raage im Forum PHPAntworten: 7Letzter Beitrag: 21.01.10, 19:05 -
Chat mit Ajax ins bestehende Membersystem
Von aargau im Forum PHPAntworten: 5Letzter Beitrag: 06.04.09, 17:36 -
Ajax Chat Tutorial
Von Kurt Cobain im Forum Javascript & AjaxAntworten: 5Letzter Beitrag: 28.02.08, 21:42 -
Awaysystem für Ajax chat
Von wt-e im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 24.03.06, 04:18





Zitieren
Login





