Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [XHTML] Ajax-Chat in Seite einbinden (https://www.delphipraxis.net/127285-%5Bxhtml%5D-ajax-chat-seite-einbinden.html)

Saul 10. Jan 2009 13:56

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Zitat:

Zitat von Matze
Ich habe damals zum Herumspielen diesen Code verwendet (etwas in der Art möchtest du haben, wenn ich das richtig sehe). Das hat einwandfrei funktioniert.

Grüße, Matze

Das läuft ja über mysql oder? das wollte ich eigentlich nicht nutzen ...
Könntet ihr sonst mal den Quelltext von "meinen" Chat überfliegen?

Matze 10. Jan 2009 14:25

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Richtig, das geht über MySQL. In deinem Quellcode verstehe ich nicht ganz, wo du das hinspeicherst. Für mich sieht es aus, als wolltest du das nur ausgeben und den alten Inhalt in einer Variablen festhalten.
Fass ich hier richtig liegen sollte, dann kann ich dir gleich sagen, dass das nicht funktionieren kann. JavaScript läuft clientseitig ab, also im Browser. Du könntest so maximal mit dir selbst chatten, denn dein Browser liest über JS den Inhalt aus, speichert ihn in einer Variablen und gibt diesen und den neuen Inhalt wieder aus. Falls andere Leute etwas schreiben sollten, bekommt dein Skript davon nichts mit. Das würde auch ohne AJAX gehen, dazu würde reines JavaScript reichen.

Also speichern musst du das irgendwo, wenn mehrere Leute chatten wollen. Daher beansprucht ein Chat auch relativ stark den Server.

Grüße, Matze

Saul 10. Jan 2009 14:39

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Also ich verstehe auch noch nicht ganz, wie das funktioniert, aber es funktioniert auf jeden Fall ^^
(siehe den Test, den ich oben schon gepostet habe) Alles schon mit nem Kumpel getestet. Wir haben beide die Nachrichten vom anderen bekommen.
Hier sonst mal der komplette Code
Code:
<?echo '<?xml version="1.0" encoding="ISO-8859-1"?>' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<?php
        require("Sajax.php");

        function colorify_ip($ip)
        {
                $parts = explode(".", $ip);
                $color = sprintf("%02s", dechex($parts[1])) .
                                 sprintf("%02s", dechex($parts[2])) .
                                 sprintf("%02s", dechex($parts[3]));
                return $color;
        }

        function add_line($msg) {
                $f = fopen("/tmp/wall.html", "a");
                $dt = date("Y-m-d h:i:s");
                $msg = strip_tags(stripslashes($msg));
                $remote = $_SERVER["REMOTE_ADDR"];
                // generate unique-ish color for IP
                $color = colorify_ip($remote);
                fwrite($f, "<span style=\"color:#$color\">$dt</span> $msg
\n");
                fclose($f);
        }

        function refresh() {
                $lines = file("/tmp/wall.html");
                // return the last 25 lines
                return join("\n", array_slice($lines, -25));
        }

        $sajax_request_type = "GET";
        sajax_init();
        sajax_export("add_line", "refresh");
        sajax_handle_client_request();
?>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
      <link href="style.css" rel="stylesheet" type="text/css" />

      <script type="text/javascript">
        //<![CDATA[
        <?
        sajax_show_javascript();
        ?>

        var check_n = 0;
        var old_data = "--";

        function refresh_cb(new_data) {
                if (new_data != old_data) {
                        document.getElementById("wall").innerHTML = new_data;
                        setTimeout("refresh()", 1000);
                        old_data = new_data;
                } else {
                        setTimeout("refresh()", 2500);
                }
                document.getElementById("status").innerHTML = "Checked #" + check_n++;
        }

        function refresh() {
                document.getElementById("status").innerHTML = "Checking..";
                x_refresh(refresh_cb);
        }

        function add_cb() {
                // we don't care..
        }

        function add() {
                var line;
                var handle;
                handle = document.getElementById("handle").value;
                line = document.getElementById("line").value;
                if (line == "")
                        return;
                sajax_request_type = "POST";
                x_add_line("[" + handle + "] " + line, add_cb);
                document.getElementById("line").value = "";
        }
        //]]>
        </script>

</head>
<body onload="refresh();">
<div id="container">
      <div id="kopf"></div>
      <div id="navigation"><div id="rollovermenu"><?php include 'navi.ink' ?></div></div>
      <div id="links"><?php include 'valid.ink' ?></div>

      <div id="inhalt">
           <h1>Chat</h1>

           <form action="#" onsubmit="add();return false;">
                 <input type="text" name="handle" id="handle" value="(Name)" onfocus="this.select()" style="width:130px;" />
                 <input type="text" name="line" id="line" value="(Nachricht)" onfocus="this.select()" style="width:300px;" />
                 <input type="button" name="check" value="Senden" onclick="add(); return false;" />
                 <div id="wall"></div>
                 <div id="status">[i]Loading..[/i]</div>
           </form>
      </div>
</div>
</body>
</html>

Matze 10. Jan 2009 14:53

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Ah, du speicherst es über PHP in einer HTML-Datei. Das ist bei einem Chat zwar nicht sonderlich sinnvoll, aber wenn's euch ausreicht ok.

Also wenn die Dateien alle über die gleiche Domain erreichbar sind, Schreibrechte für die HTML-Datei da sind und die externe sowie in die Seite eingebundenen Dateien identisch sind, dann weiß ich pauschal auch nicht, wieso es online nicht geht.

Grüße, Matze

Saul 10. Jan 2009 15:03

Re: [XHTML] Ajax-Chat in Seite einbinden
 
ich habs jetzt ... es liegt irgendwie an dem DOCTYPE abschnitt. Wenn ich das:
Code:
<?echo '<?xml version="1.0" encoding="ISO-8859-1"?>' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
komplett rausnehme, funtioniert es. Hat jemand ne Idee, wodran das liegen könnte?

Matze 10. Jan 2009 15:16

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Das "echo" kannst du dir auch schenken und es direkt hinschreiben. Der Umweg über PHP ergibt keinen Sinn.

Vielleicht geht es nicht, weil du die Anwendung nicht als XML auslieferst. Ich würde die erste Zeile, also das "echo" jedoch komplett weglassen. Irgendwelche IE-Versionen haben bei mir damit gesponnen, ohne ging es dann. Die Hauptsache ist doch, dass es in allen gängigen Browsern funktioniert.
Die DP ist beispielsweise alles andere als W3C-konform, aber wen juckt's? Sie sieht überall gut aus und ist in allen Browsern bedienbar, mehr ist nicht nötig.

Grüße, Matze

Meflin 10. Jan 2009 15:25

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Zitat:

Zitat von Matze
Sie sieht überall gut aus und ist in allen Browsern bedienbar, mehr ist nicht nötig.

Dafür ist sie vermutlich ein barrieretechnisches Desaster :stupid:

Matze 10. Jan 2009 15:29

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Muss nicht sein. Deaktiviere CSS und du siehst ganz grob, was ein Screenreader sieht.
Aber klar, wenn etwas validiert ist, ist es sicherer, zumal die Seite ohne die XML-Angabe ganz oben auch validiert sein müsste. Meine Seiten sind es zumindest in der Regel und ich nutze diese Angabe nicht. Ob es W3C-konform ist, ist natürlich wieder die andere Frage. Die haben ja so viele Regeln, die der Validator nicht prüfen kann (<table> nicht fürs Layout etc.).

Aber gut, das ist ein anderes Thema. ;)

Saul 10. Jan 2009 15:30

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Wenn ich das <?echo ' ... ' ?> rausnehme geht es ja gerade nicht in den Browsern. Es reicht auch nicht nur das
Code:
<?echo '<?xml version="1.0" encoding="ISO-8859-1"?>' ?>
oder nur das
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
rauszunehmen. es funktioniert nur, wenn ich beides rausnehme.

Namenloser 10. Jan 2009 16:43

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Den Umweg über das echo muss ich auf meienr Seite auch gehen, was daran liegt dass der PHP-Parser das <?xml als Starttag wertet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 Uhr.
Seite 2 von 5     12 34     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz