Delphi-PRAXiS
Seite 1 von 2  1 2      

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 09:43


[XHTML] Ajax-Chat in Seite einbinden
 
Hallo Community,
ich erstelle grade eine Test-Homepage mit einem Ajax-Chat. Dieser benötigt SAjax.
Den Chat habe ich zweimal hochgeladen. Einmal extern und einmal in die Seite eingebunden. Sie nutzen beide die selbe SAjax.php, doch trotzdem läuft der Chat nicht auf der Seite :(
Liegt es daran, das er nicht XHTML valide ist? Gibt es ne Möglichkeit den Chat valide zu bekommen?
Gruß Saul

EDIT:
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?

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.
Weiß jemand, was ich umschreiben müsste, damit die Tags drinbleiben können?

mjustin 10. Jan 2009 10:22

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

Zitat von Saul
Hallo Community,
ich erstelle grade eine Test-Homepage mit einem Ajax-Chat. Dieser benötigt SAjax.
Den Chat habe ich zweimal hochgeladen. Einmal extern und einmal in die Seite eingebunden. Sie nutzen beide die selbe SAjax.php, doch trotzdem läuft der Chat nicht auf der Seite :(
Liegt es daran, das er nicht XHTML valide ist? Gibt es ne Möglichkeit den Chat valide zu bekommen?
Gruß Saul

Auf Deiner Seite (http://hermes.et.hs-wismar.de/~bmt07059/Neu/wall.php) ist ja ein Validator-Link, mit dem Du die XHTML Fehler angezeigt bekommst. Einfach mal draufklicken und schauen, was dort so angezeigt und zur Lösung vorgeschlagen wird.

Viele Grüße

Saul 10. Jan 2009 12:21

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

Zitat von mjustin
Auf Deiner Seite (http://hermes.et.hs-wismar.de/~bmt07059/Neu/wall.php) ist ja ein Validator-Link, mit dem Du die XHTML Fehler angezeigt bekommst. Einfach mal draufklicken und schauen, was dort so angezeigt und zur Lösung vorgeschlagen wird.

Viele Grüße

Ja, das hab ich schon gemacht, aber ich habe keinen Ansatz, wie ich das umschreiben soll, damit das valide wird :(

mkinzler 10. Jan 2009 12:22

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Was sagt den der Validator?

Meflin 10. Jan 2009 12:29

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Wenn ich das richtig sehe, streikt da auf deiner Seite der JavaScript-Part. Kann mir nicht vorstellen, dass es an der Validität scheitert!

Saul 10. Jan 2009 13:00

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Aber woran kann das liegen? Javascript kann man doch eigentlich mit XHTML verknüpfen. Das muss doch gehen :wall: Ich dreh hier schon voll ab :bouncing4:
Oh man ^^
Vielleicht muss ich es so einbinden
Code:
<script type="text/javascript">;
<![CDATA[
  //content of your Javascript goes here
]]>
</script>
Was sagt mir das CDATA?

mkinzler 10. Jan 2009 13:02

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Es sorgt dafür, das der Text innerhalb dieses Bereiches von dem allgemeinen Parser nicht interpretiert wird

Matze 10. Jan 2009 13:05

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Code:
<script type="text/javascript">;
Diese leere Anweisung kannst du weglassen (das Semikolon).
Also Firebug meldet keine JS-Fehler oder -Warnungen, es scheint etwas Grundlegendes nicht zu funktionieren.

Saul 10. Jan 2009 13:07

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

Zitat von Matze
Diese leere Anweisung kannst du weglassen (das Semikolon).
Also Firebug meldet keine JS-Fehler oder -Warnungen, es scheint etwas Grundlegendes nicht zu funktionieren.

jetzt konnte ich die fehler schon einmal durch //<![CDATA[ ... //]]> minimieren :)
aber es klappt trotzdem nicht :'(
Du hast recht. Scheint an etwas größerem zu liegen :glaskugel:

Matze 10. Jan 2009 13:32

Re: [XHTML] Ajax-Chat in Seite einbinden
 
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

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.

omata 10. Jan 2009 17:37

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Wenn ich mir die Seite jetzt anschaue, dann sind dort noch 3 Fehler. Die ergeben sich, da im XHTML-Strict-Mode die Input-Elemente nicht direkt in der Form-Umgebung stehen dürfen.
Erweitere einfach deinen Code um ein DIV-Element...
Code:
<form ... >
 <div>
  <input ... />
 </div>
</form>

Saul 10. Jan 2009 17:55

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Danke omata. Also Valide ist die Seite jetzt schonmal, nur das grundlegende Problem existiert immernoch :(

Saul 11. Jan 2009 10:34

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Hallo,
ich bins wieder ... Gibt es sonst vielleicht die Möglichkeit, die Tags
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">
in Metadaten umzuschreiben? Sicher nicht komplett oder? Aber wenn ich mich richtig erinnere, kann man die zu validierende "Version" über die Meta-Tags angeben. Kann sich jemand erinnern, wie das geht? Weil wenn ich die Tags rausnehme, lässt sich die Seite ja nicht mehr validieren ... Ist vielleicht nicht die beste Möglichkeit, aber immerhin würde es laufen :lol:

Matze 11. Jan 2009 11:01

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Liegt es ganz sicher am Doctype? Denn damit hatte ich bisher nie Probleme, denn der gehört natürlich zu jeder Seite dazu.

Saul 11. Jan 2009 11:11

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Ich denke mal es liegt an etwas, was im XHTML 1.0 Strict nicht erlaubt ist.
Wenn ich die Tags rausnehme, muss es ja nicht mehr XHTML konform sein.
Hier habe ich mal die beiden Tags entfernt.
Und hier mit Tags.

Matze 11. Jan 2009 11:43

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Das verstehe ich überhaupt nicht.
Kannst du mir mal dein Projekt gezippt schicken oder hier anhängen? Mit der PHP-Datei, die du hier angegeben hast, will das bei mir nicht laufen.

Grüße, Matze

Saul 11. Jan 2009 12:09

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Du brauchst ja zusätzlich auch noch die SAjax.php, die im selben Ordner sein muss.

Matze 11. Jan 2009 12:13

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Jaja, die habe ich mir schon besorgt. ;) Es kommt immer ein "Headers already sent" und ich weiß aber nicht wieso.

mkinzler 11. Jan 2009 12:22

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Man kann in der php.ini einstellen das Header am Stück gesendet werden output_buffering.
Aber besser dafür sorgen, dass alle Header gesendet werde, bevor der Rest der Seite kommt. Oft liegt es an unsichtbaren Leerzeichen ausserhalb von Tags

Saul 11. Jan 2009 12:34

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

Zitat von mkinzler
Man kann in der php.ini einstellen das Header am Stück gesendet werden output_buffering.
Aber besser dafür sorgen, dass alle Header gesendet werde, bevor der Rest der Seite kommt. Oft liegt es an unsichtbaren Leerzeichen ausserhalb von Tags

Ist das jetzt an Matze oder an mich gerichtet? :oops:

Matze 11. Jan 2009 12:52

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Ich denke an mich. ;)

@Markus: Da ich eine TPL-Engine nutze, weiß ich meist, woran es liegt. Doch dieser HTML-PHP-Mischmasch ist etwas durcheinander, sodass ich da nicht erkennen kann, wo nun ein Leerzeichen zu viel ist.

@Saul: Wie gesagt: Wenn du mir das hier anhängst, biete ich dir an, dass ich's mal teste. Garantieren kann ich natürlich für nichts. Und sonst weiß ich auch nicht mehr weiter und werde mich hier ausklinken.

Gruß

mkinzler 11. Jan 2009 12:59

Re: [XHTML] Ajax-Chat in Seite einbinden
 
@Matze: wäre auch die Aufgabe von Saul, das in Ordnung zu bringen

Saul 11. Jan 2009 13:32

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von mkinzler
@Matze: wäre auch die Aufgabe von Saul, das in Ordnung zu bringen

Ich würds ja auch gern selber erledigen, doch leider finde ich keine Spur von dem Fehler/den Fehlern :(
Solange befasse ich mich mit der Webprogrammierung, noch nicht...

@Matze: Ich hab dir die benötigten Dateien mal angehängt.
Wäre echt nett, wenn du dir das mal anschauen würdest.

Matze 11. Jan 2009 13:44

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Da kommt bei mir der gleiche Fehler. Keine Ahnung, was da los ist, sorry.

mkinzler 11. Jan 2009 13:49

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Nimm mal diese Leerzeile raus
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 ...
und hier auch
Code:
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">

Saul 11. Jan 2009 13:54

Re: [XHTML] Ajax-Chat in Seite einbinden
 
? Welche meinst du jetzt genau? ich kann doch nicht alles zusammen schreiben?

freak4fun 11. Jan 2009 13:56

Re: [XHTML] Ajax-Chat in Seite einbinden
 
DU sollst ja auch nur die Leerzeilen killen. ;)

Saul 11. Jan 2009 14:04

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Ja das hab ich schon verstanden, aber das ändert doch normaler weise nix am code ... das is doch nur für die übersicht. und wenn ich die alle wegnehme klappts auch nicht.

mkinzler 11. Jan 2009 14:07

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Leerzeichen/Zeilen zwischen Tags sorgen für den Fehler den Matze vorhin genannt hat.

Saul 11. Jan 2009 14:13

Re: [XHTML] Ajax-Chat in Seite einbinden
 
Also ich hab jetzt alle rausgenommen, die ich für nicht notwendig gehalten habe und nix passiert :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 Uhr.
Seite 1 von 2  1 2      

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