Johannes Gamperl AJAX Grundlagen, Frameworks, APIs Liebe Leserin, lieber Leser, wahrscheinlich kennen Sie bereits viele Beispiele für erfolgreiche AJAX-Anwendungen. Virtuelle Landkarten wie Google Maps, webbasierte Büroanwendungen wie AJAXWrite, IRows oder nexImage, Social-Web-Software wie Flickr oder del.icio.us oder andere innovative Websites haben die Welt der Internetprogrammierung deutlich verändert. Allen gemeinsam ist die Verwendung von Asynchronous JavaScript and XML als Basistechnologie. AJAX-Anwendungen finden sich heute aber nicht nur auf großen professionellen Seiten. Selbst kleine Projekte nutzen das Zusammenspiel von JavaScript und XML und stellen so Nutzern und Benutzern benutzerfreundliche Webseiten zur Verfügung. Unser Autor Johannes Gamperl gehört zu den Pionieren der professionellen Webentwicklung in Deutschland. Seine Webseiten Kakao & Kekse, Milch & Zucker bzw. Kaffee und Kuchen waren für viele die erste Anlaufstelle im Netz, wenn es um JavaScript, DHTML oder Java ging. Auch die Möglichkeiten von AJAX hat Johannes Gamperl bereits früh für sich entdeckt. Und schon die erfolgreiche erste Auflage dieses Buches hat gezeigt, dass er auch als Autor sein Handwerk versteht. Grundkenntnisse in JavaScript sollten Sie allerdings bereits mitbringen. Johannes Gamperl führt Sie souverän um alle Klippen der AJAXEntwicklung, vermittelt Ihnen die Grundlagen des Document Object Model (DOM), der objektorientierten Programmierung sowie der Client-/Server-Entwicklung mit JavaScript. Einen besonderen Schwerpunkt legt er dabei auf die Arbeit mit gängigen Libraries (z. B. Google Maps) oder mit JavaScript-Frameworks wie Prototype und script.aculo.us, mit denen Sie schnell auf AJAX-Grundfunktionen zugreifen und visuelle Effekte nutzen können. Zahlreiche Praxisbeispiele hat Johannes Gamperl für dieses Buch entwickelt, die er Ihnen im letzten Teil ausführlich vorstellt. Ihre Meinung ist uns wichtig. Kritik oder Zuspruch hilft uns bei der Arbeit an weiteren Auflagen. Ich freue mich deshalb, wenn Sie sich mit Ihren kritischen Anmerkungen an mich wenden oder den Kontakt zum Autor auf seiner Webseite oder in seinem Forum unter www.ajax-scripting.de suchen. Ihr Stephan Mattescheck Lektorat Galileo Computing [email protected] www.galileocomputing.de Galileo Press · Rheinwerkallee 4 · 53227 Bonn Auf einen Blick 1 Einleitung ................................................................ 11 2 JavaScript und DOM ............................................... 21 3 JavaScript und CSS .................................................. 69 4 JavaScript und OOP ................................................ 99 5 JavaScript und XML ................................................ 129 6 JavaScript und HTTP ................................................ 165 7 JavaScript und Libraries .......................................... 233 8 Praxisbeispiele ........................................................ 375 9 Google & Yahoo! ...................................................... 451 10 Inhalt der Buch-DVD-ROM ..................................... 497 Der Name Galileo Press geht auf den italienischen Mathematiker und Philosophen Galileo Galilei (1564–1642) zurück. Er gilt als Gründungsfigur der neuzeitlichen Wissenschaft und wurde berühmt als Verfechter des modernen, heliozentrischen Weltbilds. Legendär ist sein Ausspruch Eppur se muove (Und sie bewegt sich doch). Das Emblem von Galileo Press ist der Jupiter, umkreist von den vier Galileischen Monden. Galilei entdeckte die nach ihm benannten Monde 1610. Gerne stehen wir Ihnen mit Rat und Tat zur Seite: [email protected] bei Fragen und Anmerkungen zum Inhalt des Buches [email protected] für versandkostenfreie Bestellungen und Reklamationen [email protected] für Rezensions- und Schulungsexemplare Lektorat Stephan Mattescheck Fachgutachten Carsten Möhrke und Julian Dreißig Korrektorat René Wiegand Cover Barbara Thoben, Köln Titelbild Corbis Typografie und Layout Vera Brauner Herstellung Vera Brauner Satz Typographie & Computer, Krefeld Druck und Bindung Koninklijke Wöhrmann, Zutphen, NL Dieses Buch wurde gesetzt aus der Linotype Syntax Serif (9,25/13,25 pt) in FrameMaker. Gedruckt wurde es auf fein holzhaltigem Naturpapier. Bibliografische Information der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar. ISBN 978-3-89842-857-6 © Galileo Press, Bonn 2007 2., aktualisierte und erweiterte Auflage 2007 Das vorliegende Werk ist in all seinen Teilen urheberrechtlich geschützt. Alle Rechte vorbehalten, insbesondere das Recht der Übersetzung, des Vortrags, der Reproduktion, der Vervielfältigung auf fotomechanischem oder anderen Wegen und der Speicherung in elektronischen Medien. Ungeachtet der Sorgfalt, die auf die Erstellung von Text, Abbildungen und Programmen verwendet wurde, können weder Verlag noch Autor, Herausgeber oder Übersetzer für mögliche Fehler und deren Folgen eine juristische Verantwortung oder irgendeine Haftung übernehmen. Die in diesem Werk wiedergegebenen Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. können auch ohne besondere Kennzeichnung Marken sein und als solche den gesetzlichen Bestimmungen unterliegen. Inhalt 1 Einleitung ................................................................................. 11 1.1 1.2 1.3 1.4 1.5 1.6 1.7 2 12 17 18 19 19 20 20 JavaScript und DOM ................................................................ 21 2.1 2.2 2.3 3 Eine kurze Reise durch die AJAX-Welt ......................................... Zielgruppe des Buches ................................................................. Aufbau des Buches ...................................................................... Anmerkungen zur zweiten Auflage ............................................... Hinweise zu den Inhalten ............................................................. Danksagung ................................................................................. Support zum Buch ....................................................................... Der Dokumentenbaum ................................................................ 2.1.1 Knoten .......................................................................... 2.1.2 Konstanten ................................................................... 2.1.3 Eigenschaften ................................................................ 2.1.4 Attribute ....................................................................... 2.1.5 Methoden ..................................................................... 2.1.6 Einfaches Beispiel .......................................................... Zugriff auf einzelne Elemente ....................................................... 2.2.1 Eigenschaften ................................................................ 2.2.2 Elemente selektieren ..................................................... 2.2.3 Attribute bearbeiten ..................................................... 2.2.4 Elemente erzeugen ........................................................ 2.2.5 Einfaches Beispiel .......................................................... Beispielprojekt »Planetensystem« ................................................. 22 23 24 25 30 33 39 44 45 48 54 58 60 63 JavaScript und CSS ................................................................... 69 3.1 3.2 3.3 3.4 Grundlagen .................................................................................. Style-Eigenschaften ...................................................................... 3.2.1 getComputedStyle() und currentStyle ............................ Stylesheet-Eigenschaften ............................................................. 3.3.1 Praxisbeispiel StyleSwitcher ........................................... 3.3.2 setProperty(), getPropertyValue() und removeProperty() .......................................................... 3.3.3 Eigenschaften des styleSheets[ ]-Arrays .......................... Regeln für Stylesheets .................................................................. 70 71 74 76 81 85 87 95 5 Inhalt 4 JavaScript und OOP ................................................................. 99 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 5 5.4 5.5 Grundlagen .................................................................................. XML laden ................................................................................... XML parsen ................................................................................. 5.3.1 XML mit dem DOM parsen ........................................... 5.3.2 Gecko-Browser und das DOM ....................................... 5.3.3 Geckos DOMParser ....................................................... Beispielprojekt »Buchladen« ......................................................... Vorschau auf E4X ........................................................................ 5.5.1 Elemente auslesen ........................................................ 5.5.2 Attribute auslesen ......................................................... 5.5.3 Filter verwenden ........................................................... 5.5.4 Struktur verändern ........................................................ 5.5.5 Platzhalter verwenden ................................................... 5.5.6 Elemente löschen .......................................................... 5.5.7 Fazit .............................................................................. 130 131 135 136 138 140 144 150 153 155 155 159 161 163 164 JavaScript und HTTP ................................................................ 165 6.1 6.2 6 100 101 103 104 107 109 116 120 JavaScript und XML ................................................................. 129 5.1 5.2 5.3 6 Klassen ........................................................................................ Eigenschaften .............................................................................. Abfragen ...................................................................................... Methoden ................................................................................... Prototypen .................................................................................. Literale ........................................................................................ JSON ........................................................................................... Praxisbeispiel ............................................................................... Grundlagen .................................................................................. 6.1.1 Client-Request-Methoden ............................................. 6.1.2 Server-Antwortcodes .................................................... 6.1.3 HTTP-Header ................................................................ XMLHttpRequest ......................................................................... 6.2.1 Das Objekt erzeugen ..................................................... 6.2.2 Methoden ..................................................................... 6.2.3 Eigenschaften ................................................................ 6.2.4 Hallo Ajax ..................................................................... 6.2.5 ajaxRequest-Klasse ........................................................ 6.2.6 Den Ladezustand anzeigen ............................................ 6.2.7 Eine Verbindung unterbrechen ...................................... 166 167 168 173 178 179 182 185 188 189 200 202 Inhalt 6.2.8 6.2.9 6.2.10 6.2.11 6.2.12 6.2.13 6.2.14 7 204 205 208 209 210 217 224 JavaScript und Libraries ........................................................... 233 7.1 7.2 7.3 8 Automatische Updates .................................................. JavaScript ausführen ...................................................... Probleme mit dem Cache .............................................. AJAX mit JSON ............................................................. Externe Quellen nutzen ................................................. Das Historie-Problem .................................................... Beispielprojekt Shoutbox .............................................. Prototype .................................................................................... 7.1.1 ajax.js ............................................................................ 7.1.2 array.js .......................................................................... 7.1.3 base.js ........................................................................... 7.1.4 dom.js ........................................................................... 7.1.5 enumerable.js ............................................................... 7.1.6 event.js ......................................................................... 7.1.7 form.js .......................................................................... 7.1.8 hash.js .......................................................................... 7.1.9 range.js ......................................................................... 7.1.10 string.js ......................................................................... script.aculo.us .............................................................................. 7.2.1 Ajax.InPlaceEditor ......................................................... 7.2.2 Ajax.InPlaceCollectionEditor ......................................... 7.2.3 Builder-Klasse ............................................................... 7.2.4 Drag&Drop ................................................................... 7.2.5 Visuelle Effekte ............................................................. 7.2.6 Kombinationen ............................................................. Behaviour .................................................................................... 234 235 253 259 272 286 300 308 320 322 323 328 328 332 333 336 354 361 366 Praxisbeispiele ......................................................................... 375 8.1 8.2 8.3 ajaxBooks .................................................................................... 8.1.1 Die Daten abrufen ........................................................ ajaxChat ...................................................................................... 8.2.1 Das Anmelden .............................................................. 8.2.2 Das Abmelden .............................................................. 8.2.3 Beiträge speichern ......................................................... 8.2.4 Die Userliste und Beiträge anzeigen .............................. ajaxComplete ............................................................................... 8.3.1 Lokale Auswahl ............................................................. 8.3.2 Formatierungen ............................................................ 8.3.3 Auswahl per AJAX ......................................................... 376 383 384 391 393 394 395 396 398 400 401 7 Inhalt 8.4 8.5 8.6 8.7 8.8 9 ajaxDict ....................................................................................... 8.4.1 Erklärung abrufen und eintragen ................................... ajaxDir ......................................................................................... 8.5.1 Auslesen der Verzeichnisstruktur ................................... 8.5.2 Anzeige des Dateiinhalts ............................................... 8.5.3 Zippen der Packliste ...................................................... Sichere Passwörter mit ajaxPass ................................................... 8.6.1 Die Passwortsicherheit überprüfen ................................ 8.6.2 Zufällige Passwörter erzeugen ....................................... ajaxTic – ein Strategiespiel ........................................................... 8.7.1 Die XML-Datei erzeugen ............................................... 8.7.2 Die XML-Datei aktualisieren ......................................... Ajax.FCKeditor ............................................................................ 8.8.1 Den FCKEditor installieren ............................................ 8.8.2 Editierbare Elemente erzeugen ...................................... 8.8.3 Die Werkzeugleiste des FCKEditor anpassen ................. 8.8.4 Sicherheitsüberlegungen ............................................... 404 410 413 421 422 423 424 428 429 430 440 442 444 445 445 448 449 Google & Yahoo! ...................................................................... 451 9.1 9.2 Google Maps ............................................................................... 9.1.1 Grundlagen ................................................................... 9.1.2 Steuerelemente ............................................................. 9.1.3 Markierungspunkte ....................................................... 9.1.4 Detailinformationen ...................................................... 9.1.5 Event-Modell ................................................................ 9.1.6 Linien zeichnen ............................................................. 9.1.7 AJAX ............................................................................. 9.1.8 Beispielanwendung ....................................................... Yahoo! Maps ............................................................................... 9.2.1 Grundlagen ................................................................... 9.2.2 Steuerelemente ............................................................. 9.2.3 Markierungspunkte ....................................................... 9.2.4 Detailinformationen ...................................................... 9.2.5 Beispielanwendung ....................................................... 452 452 457 458 462 465 470 472 473 478 479 482 484 487 489 10 Inhalt der Buch-DVD-ROM ...................................................... 497 Index ............................................................................................................ 499 8 Video-Lektionen auf der DVD Sie finden die Video-Lektionen im Verzeichnis /videotraining auf der Buch-DVD. DOM – Document Object Model 1.1 Einleitung 1.2 Grundlagen von DOM 1.3 DOM-Zugriffsmöglichkeiten 1.4 Elemente in den DOM-Baum einfügen Zusammenfassung Wissenstest zu diesem Kapitel AJAX & Co 2.1 Einleitung 2.2 Daten serialisieren mit JSON 2.3 Daten serialisieren mit XML 2.4 XSL und XSLT erstellen 2.5 Der XSLTProcessor 2.6 AJAX-Frameworks: Atlas 2.7 AJAX-Frameworks: Dojo Zusammenfassung Wissenstest zu diesem Kapitel 9 »After all, when was the last time you heard someone rave about the interaction design of a product that wasn’t on the Web? All the cool, innovative new projects are online.« Jesse James Garrett 1 Einleitung Sie haben dieses Buch gekauft, um sich mit der Thematik AJAX1 vertraut zu machen. Vorab: Was ist AJAX nicht? AJAX ist keine holländische Fußballmannschaft, kein Asteroid, kein Haushaltsreiniger und auch keiner der beiden griechischen Heeresführer im Trojanischen Krieg aus Homers Ilias, AJAX der Große oder AJAX der Kleine. Aber was ist AJAX dann? Ausgeschrieben bedeutet es Asynchronous (A) JavaScript (J) and (A) XML (X). Das Geheimnis von AJAX liegt nicht in einer neuen Technik, sondern in einer sinnvollen und kreativen Anwendung bestehender Techniken. Die wesentlichen Grundlagen von AJAX sind nicht neu. Sie wurden bisher nur noch nicht in der Form und dem Ausmaß angewandt, wie es aktuell der Fall ist. Auf eine historische Betrachtung wird hier verzichtet. Im Internet finden sich zahlreiche Quellen mit entsprechenden Informationen.2 Das Apronym AJAX wurde erstmalig in einem kurzen Artikel von Jesse James Garrett mit dem Titel »A New Approach to Web Application«3 erwähnt und hat von da an einen neuen, bis heute anhaltenden Boom ausgelöst. Der Begriff selbst ist unter dem Schlagwort »Web 2.0«4 einzuordnen, das die unterschiedlichen Techniken und Dienste moderner Webanwendungen vereint. Damit wurde die nächste Generation der Webentwicklung eingeläutet. Mithilfe von AJAX wurde es möglich, eine Datenübertragung zwischen Client/ Server im Hintergrund durchzuführen, ohne dass der Anwender dies bemerkt. Die aktuelle Seite wird dabei nicht neu geladen, es werden lediglich die relevan- 1 2 3 4 http://de.wikipedia.org/wiki/ajax Beispielsweise http://garrettsmith.net/blog/archives/2006/01/microsoft_inven_1.html http://adaptivepath.com/publications/essays/archives/000385.php http://de.wikipedia.org/wiki/Web_2.0 11 1 Einleitung ten Inhalte mit den angeforderten Daten aktualisiert. Die wesentlichen Bausteine von AJAX beruhen auf den folgenden Techniken: 왘 XHTML und CSS für die Formatierung einer Webseite 왘 Das Document Object Model (DOM) für den dynamischen Zugriff auf den Dokumentenbaum 왘 XML oder JSON für den Datenaustausch und XSLT für die Transformation 왘 Das XMLHttpRequest-Objekt für eine Client/Server-Kommunikation auf asynchroner Basis 왘 JavaScript als Schnittstelle all dieser Komponenten AJAX ist demnach eine Art »Schweizer Taschenmesser« moderner Webentwicklung und kann – kreativ angewendet – für mehr Komfort und Flexibilität in Ihren Anwendungen sorgen. Die Schwierigkeit bzw. Herausforderung in AJAX liegt weniger in den Technologien selbst begründet, als vielmehr im kreativen Umgang des Entwicklers mit den neuen Möglichkeiten. In den folgenden Kapiteln erhalten Sie alle notwendigen Grundlagen, um die einzelnen Techniken in einer Kombination in Form von AJAX sinnvoll anzuwenden. Ziel dieses Buches ist, Ihnen die fortgeschrittenen Themen der JavaScript-Programmierung für die Anwendung mit AJAX zu vermitteln. 1.1 Eine kurze Reise durch die AJAX-Welt Für erste Aha-Erlebnisse in Bezug auf AJAX sorgte Google mit seinen Anwendungen »Google Suggest« und »Google Maps«, worauf Yahoo! seine »Yahoo! Maps« einführte. Auf diese Anwendungen wird in den späteren Kapiteln näher eingegangen. Mittlerweile werden zahlreiche mit AJAX entwickelte Anwendungen angeboten. Eine kleine Reise durch die Welt von AJAX soll Ihnen einen ersten Eindruck von den vielfältigen Möglichkeiten dieser Technik vermitteln. Die erste Station der Reise führt zu »Flickr«5, einem Angebot von Yahoo!, mit dem Sie Ihre Fotos mit anderen Anwendern teilen können. Zahlreiche innovative Elemente sorgen dabei für ein angenehmes Navigieren innerhalb der angebotenen Fotoalben. Mithilfe von »Netvibes«6 können Sie eine personalisierte Homepage mit Elementen für die Anzeige von Börsenkursen, des Wetters, Newsfeeds und vieles mehr einrichten. Die einzelnen Inhalte können mit der Maus per Drag&Drop nach 5 http://www.flickr.com/ 6 http://www.netvibes.com/ 12 Eine kurze Reise durch die AJAX-Welt eigenen Wünschen arrangiert werden. In ähnlicher Weise bietet »Protopage«7 seinen Service an. Seit AJAX die Karten im Internet neu gemischt hat, erfreuen sich Anwendungen, die typische Office-Applikationen nachbilden, großer Beliebtheit. »Thumbstacks«8 ist ein interessantes Tool, um Präsentationsfolien für das Web zu erstellen. Für das Gestalten Ihrer Folien stehen Ihnen zahlreiche Werkzeuge zur Verfügung. Texte und Elemente können per Drag&Drop arrangiert und in ihrer Optik angepasst werden. Ebenso ist es möglich, die einzelnen Seiten der Präsentation per Drag&Drop neu anzuordnen. Selbst die rechte Maustaste wird in der Anwendung unterstützt, um beispielsweise mehrere Objekte zu Gruppieren. Mithilfe von »TinyMCE«9 erhalten Sie einen kostenlosen Online-Editor mit zahlreichen Funktionen, wie beispielsweise einen dynamischen Dateibrowser oder einer Rechtschreibprüfung. Dieser Editor eignet sich hervorragend für den Einsatz in Online-Tools – beispielsweise in einem CMS oder einem Weblog. Unter dem Label »ajax13«10 werden Ihnen unterschiedliche Tools zur Arbeit im Office-Stil angeboten. Darunter finden sich Anwendungen zur Präsentation, Tabellenkalkulation, Textverarbeitung oder zur Darstellung von Ablaufdiagrammen. Abbildung 1.1 Unter dem Label ajax13 finden Sie zahlreiche Office-Anwendungen. 7 8 9 10 http://www.protopage.com/ http://www.thumbstacks.com/ http://tinymce.moxiecode.com/ http://eu.ajax13.com/ 13 1.1 1 Einleitung Bilder können Sie mit »Picresize«11 per AJAX direkt online bearbeiten. Dazu laden Sie eine oder mehrere Grafiken auf den Server des Anbieters, der diese temporär zwischenspeichert. Anschließend können Sie die Grafiken nach Ihren Vorstellungen ausschneiden, verkleinern oder vergrößern. Für eine optische Veränderung der Bilder ist es möglich, zwischen unterschiedlichen Effekten, wie beispielsweise das Rotieren des Bildes, Farbumwandlungen, einfügen von Unschärfe oder das Einrahmen mit einer gewünschten Farbe zu wählen. Die bearbeiteten Bilder stehen abschließend in den Formaten GIF, JPEG oder PNG für die weitere Verwendung zum Download zur Verfügung. Für dynamische Webanwendungen ist ein gut durchdachtes Datenbankdesign eine wichtige Voraussetzung für eine erfolgreiche Umsetzung. Mit Hilfe der AJAX-Anwendung »WWW SQL Designer«12 können Sie die Struktur Ihrer Datenbank interaktiv über Ihren Webbrowser planen. Neben der optischen Darstellung der Tabellenstruktur ist es zudem möglich, Beziehungen einzelner Tabellen zueinander per Drag&Drop zu bestimmen und darzustellen. Die fertige Struktur kann in verschiedene Formate exportiert und anschließend in eine Datenbank importiert werden. Abbildung 1.2 Der SQL Designer erlaubt es dem Anwender, über eine dynamische Weboberfläche ein Datenmodell zu planen und zu erzeugen. 11 http://www.picresize.com/ 12 http://ondras.praha12.net/sql/ 14 Eine kurze Reise durch die AJAX-Welt »Wufoo«13 hilft Ihnen bei der Gestaltung von einfachen bis hin zu komplexen Formularanwendungen. Ansprechende Formulare, Umfragen, Mailinglisten, ein Warenkorbsystem und vieles mehr, sind somit im Handumdrehen erzeugt. Dazu werden Sie schrittweise an das Ergebnis herangeführt. »Wufoo« beschränkt sich dabei aber nicht nur auf die Gestaltung, sondern erzeugt auch zugleich dynamisch alle relevanten Skripte für die Datenverarbeitung und Fehlerbehandlung; falls nötig auch die Datenbankanbindung sowie ein Backend für die Administration der eingehenden Daten. Die Anwendung selbst wird auf dem Server von »Wufoo« gehostet. Sie können dabei aus verschiedenen Dienstleistungspaketen wählen. Zum Kennenlernen wird Ihnen ein kostenloser Account mit eingeschränkter Möglichkeit angeboten. In den kostenpflichtigen Varianten stehen Ihnen unter anderem ein großer Speicherplatz, unlimitierte Formularanwendungen sowie eine SSL-Verschlüsselung zur Verfügung. Die Anwendung selbst ist dank AJAX komfortabel und übersichtlich zu bedienen. »Sidekiq«14 ist ein Suchportal, welches auf der AJAX-Technologie basiert. Für die Suche erzeugt diese Anwendung dynamisch eine Sidebar, welche fortan auf allen Seiten, die im Folgenden angesteuert werden, verfügbar bleibt. Diese Sidebar kann per Mausklick minimiert und wieder vergrößert werden. Bei Ihrer Recherche ist es möglich aus über 20 Kategorien zu wählen, in denen Sie nach bestimmten Begriffen suchen können. »Sidekiq« steuert dazu aus unzähligen Suchmaschinen selbstständig eine für die aktuelle Anfrage am geeignetsten erscheinende an. Per Standard wird die Suche mit Google ausgeführt. Sie wollten immer schon wissen, was die Stunde in Hong Kong oder in Sydney schlägt? Dann ist World »Clockr«15 genau das Richtige für Sie. Mit dieser AJAXAnwendung können Sie sich die aktuelle Uhrzeit für eine beliebige Zielstadt anzeigen lassen. Die Vorgehensweise dazu ist denkbar einfach. Zunächst tragen Sie in einem Suchfeld die gewünschte Stadt ein, zu der Sie die Uhrzeit wissen möchten. Nach dem Absenden der Anfrage wird die Zieladresse mit Hilfe von Google Maps angezeigt. Hier können Sie dann noch eine Feinjustierung des Ziels vornehmen. Anschließend wird eine Uhr als Widget in einem ansprechenden Design für Ihre Webseite erzeugt. Nach diesem Muster ist es möglich, sich beliebig viele Uhren – etwa für einen Vergleich – anzeigen zu lassen. Die jeweiligen Zeiten können Sie im amerikanischen oder europäischen Format darstellen und zwischen diesen Ansichten jederzeit wechseln. 13 http://www.wufoo.com/ 14 http://www.sidekiq.com/ 15 http://www.worldclockr.com/ 15 1.1 1 Einleitung Für mathematisch ambitionierte Anwender bietet »Fooplot«16 ein interessantes Angebot. Mit diesem Service können bis zu vier Funktionen gleichzeitig als Plotgrafik angezeigt werden. Für die Darstellung der Funktionen ist es möglich, zwischen einer 2-D- und 3-D-Ansicht zu wählen. Über eine kleine Toolbox können Sie in der Darstellung zoomen und sich per Drag&Drop – ähnlich wie bei Google Maps – im Koordinatensystem bewegen. Die Optik der Darstellung kann nach eigenen Wünschen beeinflusst werden, um beispielsweise das Gitternetz oder das Zahlenraster auszublenden oder einen neuen Koordinatenbereich zu definieren. Neben der Möglichkeit, Funktionen über eine Formulareingabe einzubinden, ist es über eine entsprechend formatierte Query möglich, diese direkt per URL anzeigen. Technisch betrachtet werden die Plots mit Hilfe von SVG und VML erzeugt und per AJAX dynamisch manipuliert. Ein Wörterbuch der besonderen Art wird von »ObjectGraph Dictionary«17 angeboten. Hier können Sie dynamisch auf unterschiedliche Ergebnislisten einer Suche springen. Ein Artikel erklärt in einzelnen Schritten das technische Konzept. Einen vollwertigen Messenger für die Dienste von AIM, GTalk, ICQ, Jabber, MSN oder Yahoo! über eine webbasierte Oberfläche bietet eine Anwendung mit dem Namen »meebo«18 .Für eine webbasierte E-Mail-Verwaltung erhalten Sie mit »Zimbra«19 eine mächtige Anwendung mit zahlreichen Funktionen. Die Arbeit mit diesem Tool vermittelt dem Anwender fast das Gefühl einer echten Desktop-Anwendung. Die Liste interessanter AJAX-Anwendungen ließe sich beliebig lang fortsetzen. Zahlreiche Webangebote, wie beispielsweise »Ajaxian«20, »AJAX Matters«21, »AJAX Info«22 oder »AJAX blog«23 informieren mittlerweile fast täglich über Neuigkeiten aus der AJAX-Szene. 16 17 18 19 20 21 22 23 16 http://www.fooplot.com/ http://www.objectgraph.com/dictionary/ http://www.meebo.com/ http://www.zimbra.com/ http://www.ajaxian.com/ http://www.ajaxmatters.com/ http://ajaxinfo.com/ http://ajaxblog.com/ Zielgruppe des Buches Abbildung 1.3 Zimbra ist ein mächtiger E-Mail-Client mit zahlreichen Funktionen. 1.2 Zielgruppe des Buches Dieses Buch versteht sich nicht als Einführungslektüre. Es richtet sich in erster Linie an fortgeschrittene Webentwickler sowie an Profis, die sich mit AJAX aus beruflichen oder privaten Gründen beschäftigen. Aber auch der interessierte und ambitionierte fortgeschrittene Laie wird sich in diesem Buch zurechtfinden. Für den sicheren Umgang mit AJAX werden in diesem Buch die wesentlichen Grundlagen von CSS, JavaScript, PHP sowie XHTML vorausgesetzt. Sie sollten daher bereits erste Erfahrungen in der clientseitigen Webentwicklung gesammelt haben und mit den Grundlagen der CGI-Programmierung anhand der Skriptsprache PHP vertraut sein. Begriffe wie Variablen, Arrays oder Schleifen sollten Ihnen bekannt sein. Für einen schnellen Zugang zu den Themen des Buches wurden die Inhalte und Beispiele möglichst einfach gestaltet. 17 1.2 1 Einleitung 1.3 Aufbau des Buches Bei der Aufbereitung der Inhalte wurde darauf geachtet, möglichst praxisorientiert auf das jeweilige Thema einzugehen. Die Beispiele in den einzelnen Kapiteln helfen, den Lernerfolg zu beschleunigen, und geben Anregungen und Ideen für eigene Erweiterungen und Anwendungen. Für die Transformation der Daten wird in diesem Buch nicht auf XSLT eingegangen, sondern mit DOM und CSS gearbeitet, die in der Webentwicklung als Standards anzusehen sind. Die einzelnen Kapitel können sowohl nacheinander gelesen als auch einzeln nach Ihren Interessen durchgearbeitet werden. Einige Kapitel erwarten dabei Kenntnisse aus vorangegangenen Kapiteln, sind aber in der Regel auch für sich allein gut zu verstehen. Jedes der acht Arbeitskapitel schließt mit einem Praxisbeispiel, in dem die vermittelten Inhalte angewendet werden. Das Buch ist wie folgt aufgebaut: In Kapitel 2, JavaScript und DOM, werden die Grundlagen des Document Object Models vorgestellt. Dabei wird auf die wichtigsten Eigenschaften und Methoden mit kurzen Beispielen eingegangen. Der sichere Umgang mit DOM ist eine der Grundvoraussetzungen für die Arbeit mit AJAX. Das notwendige Wissen über die Möglichkeiten mit JavaScript dynamisch ein Stylesheet zu bearbeiten vermittelt Kapitel 3, JavaScript und CSS. Für ein besseres Verständnis der OOP in Verbindung mit JavaScript werden in Kapitel 4, JavaScript und OOP, die Grundlagen und fortgeschrittene Aspekte vorgestellt. Wie Sie mit JavaScript auf XML-Daten zugreifen und diese bearbeiten können, zeigt Kapitel 5, JavaScript und XML. Darüber hinaus erhalten Sie hier einen ersten Ausblick auf den zukünftigen Standard E4X. Die relevanten Grundlagen zu AJAX und dem XMLHttpRequest-Objekt werden in Kapitel 6, JavaScript und HTTP, vorgestellt. Dabei wird auch auf die Grundlagen des HTTP-Protokolls eingegangen, was für das Verstehen von Client/ServerAnwendungen erforderlich ist. Kapitel 7, JavaScript und Libraries, stellt einige der interessantesten JavaScriptBibliotheken in Verbindung mit AJAX vor. Diese dienen zugleich als Grundlage für die Praxisbeispiele des nächsten Kapitels. Damit Sie den praktischen Nutzen von AJAX besser nachvollziehen können, werden in Kapitel 8, Praxisbeispiele, sieben unterschiedliche Projekte in ihren einzel- 18 Hinweise zu den Inhalten nen Schritten vorgestellt. Die jeweiligen Anwendungen sollen Ihnen Anregungen und Ideen für eigene Erweiterungen und Projekte geben. Mit einem Einblick in die Arbeit zu Google und Yahoo! Maps in Kapitel 9, Google & Yahoo!, schließt dieses Buch. Hier erfahren Sie alles, was für den erfolgreichen Einsatz dieser Anwendungen erforderlich ist. 1.4 Anmerkungen zur zweiten Auflage Zunächst möchte ich mich bei allen Lesern bedanken, die mich auf Fehler der ersten Auflage aufmerksam gemacht haben. Diese Hinweise haben mir sehr bei der Überarbeitung dieses Buches geholfen. Generell wurden alle Kapitel einer textlichen und wo nötig, einer inhaltlichen Überarbeitung unterzogen. Das Kapitel 7, JavaScript und Libraries, wurde komplett überarbeitet. Meine Absicht hierbei ist es, eine möglichst umfassende Dokumentation zur PrototypeBibliothek anzubieten. Zahlreiche kleinere Beispiele werden Ihnen helfen, die umfangreichen Methoden und Möglichkeiten dieser Bibliothek besser verstehen und anwenden zu können. Dabei wurde die zum Zeitpunkt der Bearbeitung aktuelle Version 1.4.0 als Basis verwendet. Der Abschnitt über die script.aculo.usBibliothek ist gegenüber der ersten Auflage um bisher unberücksichtigt gebliebene Methoden und Tools ergänzt worden. Auch hier bringen Ihnen kurze Beispiele die praktische Anwendung der angebotenen Möglichkeiten näher. Kapitel 8, Praxisbeispiele, erhielt ein neues Beispiel »Ajax.FCKeditor«. Dabei handelt es sich um eine Erweiterung für die Prototype-Bibliothek, mit der Sie beliebige Inhalte einer bestehenden Webseite mit einer WYSIWYG-Komponente ausstatten können. Für das Kapitel 9, Google & Yahoo!, war die wichtigste Erkenntnis, dass nun endlich auch Deutschland weitgehend kartografiert wurde und somit viele Ideen für den lokalen Markt umgesetzt werden können. 1.5 Hinweise zu den Inhalten In den einzelnen Kapiteln finden Sie an einigen Stellen Fußnoten mit Webadressen zu vertiefenden oder ergänzenden Themen. Zahlreiche Beispiel wurden in den Kapiteln als kurze Codesnippets eingebunden, um den Inhalt nicht unnötig aufzublähen. Umfangreiche Beispiele zeigen zum 19 1.5