AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

AJAX geht nicht mit XHTML!

Ein Thema von derpepe · begonnen am 28. Jul 2005 · letzter Beitrag vom 29. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von derpepe
derpepe

Registriert seit: 16. Mär 2005
Ort: Dotternhausen
164 Beiträge
 
Delphi 2005 Personal
 
#1

AJAX geht nicht mit XHTML!

  Alt 28. Jul 2005, 19:26
Hallo,

es geht um ein PHP-Programm das mal ein CMS werden soll

Die erstellten Seiten liefere ich, je nach Browser als XHTML aus (für z.B. Firefox usw.) oder als HTML (für IE). Damit meine ich, dass ich im Header als Content-Type application/xhtml+xml oder text/html angebe.

Jetzt bin ich grad dran AJAX-Funktionen einzubauen und bin auf ein sehr kurioses Problem gestoßen:
Liefere ich die Seite als HTML aus klappt alles einwandfrei.
Liefere ich die Seite an Firefox 1.0.4 als XHTML aus, wird das JavaScript nicht ausgeführt.

Anbei mal mein HTML-Quelltext den ich ausliefere als Beispiel.

Hab ich da was mit den SCRIPT-Tags falsch gemacht? Gibt es da bei XHTML etwas zu beachten?
Oder hab ich einen Fehler im Firefox gefunden?

Ich bin für jede Antwort dankbar!


BTW: Es handelt sich um einen reproduzierbaren Fehler.

edit:X-Post http://www.xhtmlforum.de/viewtopic.php?t=5060
Angehängte Dateien
Dateityp: zip test_131.zip (1,4 KB, 11x aufgerufen)
Peter J. Schneider
http://raketenwerfer.de/programmieren/delphi/index.html
Nes dar in da kev, sed un est a log!
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: AJAX geht nicht mit XHTML!

  Alt 28. Jul 2005, 19:49
Moin derpepe,

warum lieferst du es je nach Browser als XHTML bzw. HTML aus?
Entweder ist etwas XML oder HTML, AFAIR kann man das nicht so einfach kombinieren wie es dir passt. Von daher passen auch schon die ersten Zeilen IMO nicht (zuerst ein XML-Doctype, danach ein XHTML?

Noch was: formatier den JS-Code, der sieht ja grauenhaft aus

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von derpepe
derpepe

Registriert seit: 16. Mär 2005
Ort: Dotternhausen
164 Beiträge
 
Delphi 2005 Personal
 
#3

Re: AJAX geht nicht mit XHTML!

  Alt 28. Jul 2005, 20:02
Zitat von alcaeus:
Moin derpepe,

warum lieferst du es je nach Browser als XHTML bzw. HTML aus?
Entweder ist etwas XML oder HTML, AFAIR kann man das nicht so einfach kombinieren wie es dir passt. Von daher passen auch schon die ersten Zeilen IMO nicht (zuerst ein XML-Doctype, danach ein XHTML?

Noch was: formatier den JS-Code, der sieht ja grauenhaft aus

Greetz
alcaeus
Also:

Der XHTML-1.0-Standard sieht vor, dass ein Dokument ein XML-Dokument ist, das HTML-Tags enthält. Das witzige dabei ist, dass der IE kein XHTML kann, er stellt die Seiten dann im sog. Quirks-Modus dar, d.h. er tut so als ob es sich um HTML handelt.
Wenn Du die Seite (korrekterweise) als XML auslieferst, zeigt der IE einen Downloaddialog an.
Das ist auch der Grund warum ich dem IE die Seite als HTML und nicht als XHTML ausliefere.

Browser wie Firefox die XHTML beherrschen parsen das ganze als XML-Dokument, d.h. sie finden jeden Fehler, was XHTML sehr viel weniger fehleranfällig als HTML macht und auch der Grund ist warum mir XHTML gefällt
Lediglich das AJAX-Zeug scheint nicht zu funktionieren.


Der vorliegende Code ist also valides XHTML. Kannst ja auch mal den W3C-Validator drüberlaufen lassen
(http://validator.w3.org/)


BTW: XHTML 1.1 (der aktuelle Standard) läßt es nicht mehr zu, dass "blöden" Browsern wie dem IE der Code als HTML angedreht wird. Deshalb ist es totaler Blödsinn heute XHTML 1.1 zu verwenden, da alle IE-Benutzer de facto ausgeschlossen sind.


Zu Deinem Tipp den JS-Code zu formatieren: Der JS-Code stammt nicht von mir, ich verwende die PHP-Klassen von flxAJAX (http://tripdown.de/flxajax/), die den kompletten JS-Code selbst generieren.
Das Problem ist ja auch nicht das JavaScript, es funktioniert ja auch wenn man die Seite als HTML-Seite ausgibt.


edit:
Noch kurz was dazu:
Zitat von alcaeus:
AFAIR kann man das nicht so einfach kombinieren wie es dir passt. Von daher passen auch schon die ersten Zeilen IMO
nicht (zuerst ein XML-Doctype, danach ein XHTML?
Da hab ich schon recht, überall bei Google liest man das (z.B. http://www.comet-doku.info/schule/xhtml/k51.shtml).

Allerdings kann man das wohl auch weglassen

Mit find ich sicherer und besser
Peter J. Schneider
http://raketenwerfer.de/programmieren/delphi/index.html
Nes dar in da kev, sed un est a log!
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: AJAX geht nicht mit XHTML!

  Alt 28. Jul 2005, 21:28
@derpepe:

Schau dir mal deinen Script-Code an:

Code:
<script type="text/javascript">
<!--
        // flexible ajax library
        // author: clemens krack <ckrack@gmail.com> [url]http://tripdown.de[/url]
        var flxajax_request_type = "GET";
Du verwendest innerhalb des <script>-Elements spitze Klammern, also das Trennzeichen für Elemente!
Klar, dass das kein valides (in diesem Fall nicht mal wohlgeformtes) XML mehr sein kann. Damit es dass wieder wird, musst du den Text innerhalb deines <script>-Elementes als CDATA (nicht als PCDATA, was es standardmäßig ist) deklarieren. Also du legst einfach folgenden Block außenrum:

Code:
<script>
 <![CDATA[ ... Inhalt ... ]]>
</script>
Das gleiche gilt auch für Stylesheets, falls du dort auch spitze Klammern verwendest. Oder halt gleiche eine externe Datei verwenden.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von derpepe
derpepe

Registriert seit: 16. Mär 2005
Ort: Dotternhausen
164 Beiträge
 
Delphi 2005 Personal
 
#5

Re: AJAX geht nicht mit XHTML!

  Alt 28. Jul 2005, 21:35
Cool, das ist doch mal eine Antwort!
Sowas in der Art hatte ich ja schon vermutet.

Aber sag mir eins:
Bei folgendem Code:
Delphi-Quellcode:
<script>
<![CDATA[
 ... Inhalt ...
]]>
</script>
Interpretiert da JavaScript die Zeile mit ]]> nicht als ungültigen Syntax?
Müßte das nicht in etwa so aussehen:
Delphi-Quellcode:
<script>
<![CDATA[
 ... Inhalt ...
// ]]>
</script>
???


edit:Aber als HTML-Quelltext ist das ja besch*****, was da wohl der IE macht? Gleich mal testen...
edit2:Es ist lächerlich!! Egal wie ich es mit CDATA mache, der IE zeigt an "Fehler in Javascript: Objekt erwartet", dafür tuts im Firefox. Es kann doch nicht sein dass ich für jeden Browser ein eigenes Dokument ausliefern muss nur weil MS zu blöde ist dem IE XHTML korrekt beizubringen!?
Peter J. Schneider
http://raketenwerfer.de/programmieren/delphi/index.html
Nes dar in da kev, sed un est a log!
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: AJAX geht nicht mit XHTML!

  Alt 28. Jul 2005, 21:44
Hm ja, aus Sicht des Interpreters sollte das besser so sein. Hab ich übersehen, sorry. Ist das gleiche wie die - Geschichte.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: AJAX geht nicht mit XHTML!

  Alt 28. Jul 2005, 21:47
Zitat von derpepe:
C
edit2:Es ist lächerlich!! Egal wie ich es mit CDATA mache, der IE zeigt an "Fehler in Javascript: Objekt erwartet", dafür tuts im Firefox. Es kann doch nicht sein dass ich für jeden Browser ein eigenes Dokument ausliefern muss nur weil MS zu blöde ist dem IE XHTML korrekt beizubringen!?
Setz vieeleicht auch mal JS-Kommentare vor das beginnende CDATA. HtmlTidy baut mit sowas rein:

[code]
<script>
//<![CDATA[
//<!--
... Inhalt ...
//]]>
//-->
</script>
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von derpepe
derpepe

Registriert seit: 16. Mär 2005
Ort: Dotternhausen
164 Beiträge
 
Delphi 2005 Personal
 
#8

Re: AJAX geht nicht mit XHTML!

  Alt 28. Jul 2005, 21:48
Und wie kann ich den Beginn
<![CDATA[ "maskieren"?

Wenn ich
Delphi-Quellcode:
<script>
// <![CDATA[
...
schreibe ist das wohl kaum noch gültig, oder?

edit:Die Antwort kam vor der Frage
Peter J. Schneider
http://raketenwerfer.de/programmieren/delphi/index.html
Nes dar in da kev, sed un est a log!
  Mit Zitat antworten Zitat
Benutzerbild von derpepe
derpepe

Registriert seit: 16. Mär 2005
Ort: Dotternhausen
164 Beiträge
 
Delphi 2005 Personal
 
#9

Re: AJAX geht nicht mit XHTML!

  Alt 28. Jul 2005, 21:51
Zitat von Chewie:
Zitat von derpepe:
C
edit2:Es ist lächerlich!! Egal wie ich es mit CDATA mache, der IE zeigt an "Fehler in Javascript: Objekt erwartet", dafür tuts im Firefox. Es kann doch nicht sein dass ich für jeden Browser ein eigenes Dokument ausliefern muss nur weil MS zu blöde ist dem IE XHTML korrekt beizubringen!?
Setz vieeleicht auch mal JS-Kommentare vor das beginnende CDATA. HtmlTidy baut mit sowas rein:

[code]
<script>
//<![CDATA[
//<!--
... Inhalt ...
//]]>
//-->
</script>
Daraufhin beschwert sich Firefox mit
"XML-Verarbeitungsfehler: nicht wohlgeformt Adresse: http://localhost/eigene/PCMSdev/ajaxtest.pcms.php Zeile Nr. 101, Spalte 3:]]> --^"

Ist ja auch klar.
Wenn ich aber die zwei Zeilen tausche
Code:
//]]>
//-->
passiert dasselbe!??!

edit: Sorry, mein Fehler
Wenn ich es tausche klappt es doch, Kommentar im CDATA tztztz, darauf wär ich alleine nie gekommen!
Danke!
Peter J. Schneider
http://raketenwerfer.de/programmieren/delphi/index.html
Nes dar in da kev, sed un est a log!
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: AJAX geht nicht mit XHTML!

  Alt 28. Jul 2005, 21:53
Man muss ich das zunächst mal aus der Sicht des XML-Parsers vorstellen: Dieser kennt nur die Syntax von XML und das DTD für XHTML. Dass in einem Scipt-Element Javascript-Code steht, weiß der nicht, dass muss er auch nicht wissen. Für ihn steht da einfach nur Text (also Charactr Data) drin, keine weiteren Elemente.

Und Javascript kümmert sich nicht um XML-Kommentare oder CDATA-Direktiven. Der JS-Interpreter kriegt einfach das innerhalb des Script-Blockes übergeben, die Kommentare und die Direktiven kennt er nicht und betrachtet sie als Syntaxfehler.


Edit:


Äh, ups ja, die beiden waren natürlich in der falschen Reihenfolge. Aber warum das nicht tut, weiß ich jetzt auch nicht. Spiel mal ein bisschen damit rum, lass mal z.B. die Kommentare weg.
Und lass mal HTMLTidy drüberlaufen und schau dir an, was dort für Änderungen vorgeschlagen werden.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:06 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