AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [XHTML] Ajax-Chat in Seite einbinden
Thema durchsuchen
Ansicht
Themen-Optionen

[XHTML] Ajax-Chat in Seite einbinden

Ein Thema von Saul · begonnen am 10. Jan 2009 · letzter Beitrag vom 11. Jan 2009
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Saul
(Gast)

n/a Beiträge
 
#11

Re: [XHTML] Ajax-Chat in Seite einbinden

  Alt 10. Jan 2009, 13:56
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?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: [XHTML] Ajax-Chat in Seite einbinden

  Alt 10. Jan 2009, 14:25
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
  Mit Zitat antworten Zitat
Saul
(Gast)

n/a Beiträge
 
#13

Re: [XHTML] Ajax-Chat in Seite einbinden

  Alt 10. Jan 2009, 14:39
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>
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: [XHTML] Ajax-Chat in Seite einbinden

  Alt 10. Jan 2009, 14:53
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
  Mit Zitat antworten Zitat
Saul
(Gast)

n/a Beiträge
 
#15

Re: [XHTML] Ajax-Chat in Seite einbinden

  Alt 10. Jan 2009, 15:03
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?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: [XHTML] Ajax-Chat in Seite einbinden

  Alt 10. Jan 2009, 15:16
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
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#17

Re: [XHTML] Ajax-Chat in Seite einbinden

  Alt 10. Jan 2009, 15:25
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
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: [XHTML] Ajax-Chat in Seite einbinden

  Alt 10. Jan 2009, 15:29
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.
  Mit Zitat antworten Zitat
Saul
(Gast)

n/a Beiträge
 
#19

Re: [XHTML] Ajax-Chat in Seite einbinden

  Alt 10. Jan 2009, 15:30
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.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#20

Re: [XHTML] Ajax-Chat in Seite einbinden

  Alt 10. Jan 2009, 16:43
Den Umweg über das echo muss ich auf meienr Seite auch gehen, was daran liegt dass der PHP-Parser das <?xml als Starttag wertet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:30 Uhr.
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