Ajax und PHP Cristian Darie, Bogdan Brinzarea, Mihai Bucica, Filip Chereches

Die Seite wird erstellt Horst Schott
 
WEITER LESEN
Produktinformation                                                                 Seite 1 von 1

                        Ajax und PHP
      Cristian Darie, Bogdan Brinzarea, Mihai
               Bucica, Filip Chereches
    Interaktive Webanwendungen für das Web 2.0 erstellen

                              ISBN 3-446-40920-3

                                      Leseprobe

        Weitere Informationen oder Bestellungen unter
 http://www.hanser.de/3-446-40920-3 sowie im Buchhandel

http://www.hanser.de/deckblatt/deckblatt1.asp?isbn=3-446-40920-3&style=Leseprobe    12.09.2006
2
2 Cleveres JavaScript für die
  Clientseite
Ein Bild sagt mehr als tausend Worte. Und so ist es auch mit einem gut geschriebenen
Stück Code. In diesem und dem nächsten Kapitel werden Sie von beiden eine Menge zu
sehen bekommen, wenn die Grundlagen für Ihre zukünftigen AJAX-fähigen Anwendun-
gen gelegt werden.
Hoffentlich hat das erste Kapitel Ihr Interesse an AJAX so sehr geweckt, dass Sie nun ein
zweites, eher theorielastiges Kapitel auf sich nehmen können. Andererseits: Wenn die
Übung im ersten Kapitel noch etwas zu schwierig war, werden Sie sich vielleicht freuen,
dass dieses Mal etwas langsamer vorwärts geht. Wir werden die Theorie Stück für Stück
mit vielen kurzen Beispielen aufbauen. In diesem Kapitel lernen Sie die AJAX-
Technologien für den Client kennen:
   JavaScript
   Das JavaScript-DOM
   Cascading Style Sheets (CSS)
   Das XMLHttpRequest-Objekt
   Extensible Markup Language (XML)
Sie werden diese Komponenten so integrieren, dass sie reibungslos zusammenarbeiten,
und eine solide Grundlage für Ihre zukünftigen AJAX-Anwendungen legen. Sie erfahren,
wie man eine wirkungsvolle Fehlerbehandlung implementiert und Code effizient anlegt. In
Kapitel 3 werden die Grundlagen abgeschlossen, indem die serverseitigen Technologien
erläutert werden, das heißt in unserem Fall: PHP, MySQL und andere mehr.
Um ein guter AJAX-Entwickler zu werden, müssen Sie genau wissen, wie die einzelnen
Bausteine separat funktionieren, und in einem zweiten Schritt lernen, wie Sie ein Zusam-
menspiel dieser Komponenten bewirken können. Wir setzen voraus, dass Sie einiges an
Erfahrung mit zumindest einem Teil dieser Technologien mitbringen.
Je nach Ihrem Vorwissen sollten Sie sich vor, während oder nach der Lektüre von Kapitel
2 und 3 ein wenig Zeit nehmen, um Anhang B unter http://ajaxphp.packtpub.com an-

                                                                                            39
2 Cleveres JavaScript für die Clientseite

         zuschauen. Dort werden Tools gezeigt, die einem Programmierer das Leben sehr erleich-
         tern. Bitte überspringen sie diesen wichtigen Teil nicht, denn wenn die richtigen Tools
         richtig genutzt werden, kann dies einen gewaltigen Unterschied machen.
         Alle Beispielanwendungen dieses Buchs finden Sie online unter http://ajaxphp.packt
         pub.com/.

2.1      JavaScript und das Document Object Model

         Wie bereits in Kapitel 1 erwähnt, ist JavaScript das Herz von AJAX. JavaScript hat eine
         ähnliche Syntax wie das gute alte C. JavaScript ist eine geparste Sprache (also keine
         kompilierte) und besitzt einige Fähigkeiten für die objektorientierte Programmierung
         (OOP). JavaScript wurde ursprünglich nicht für große, mächtige Anwendungen geschaf-
         fen, sondern zum Schreiben einfacher Skripten, um die clientseitige Funktionalität einer
         Webanwendung zu implementieren oder zu ergänzen. (Es gibt allerdings einen neuen
         Trend, JavaScript zu einer Sprache der Enterprise-Klasse auszubauen, doch es bleibt ab-
         zuwarten, wie weit dies gehen wird).
         JavaScript wird von der überwiegenden Mehrzahl der Webbrowser voll unterstützt. Zwar
         ist es möglich, JavaScript-Skripten selbstständig auszuführen, aber normalerweise werden
         sie zusammen mit dem HTML-Code, der ihre Funktionalität benötigt, auf den Clientbrow-
         ser geladen. Dass der gesamte JavaScript-Code unverändert auf dem Client ankommen
         muss, ist zugleich eine Stärke und eine Schwäche, und muss berücksichtigt werden, wenn
         ein Framework für eine Web-Lösung geschrieben werden soll. Gute Einführungen in Ja-
         vaScript finden Sie an folgenden Stellen:
            http://www.echoecho.com/javascript.htm
            http://www.devlearn.com/javascript/jsvars.html
            http://www.w3schools.com/js/default.asp
         Die Mächtigkeit von JavaScript auf der Clientseite beruht zum Teil auf seiner Fähigkeit,
         das übergeordnete HTML-Dokument zu manipulieren, und zwar über die DOM-
         Schnittstelle. Das DOM ist für eine Vielzahl von Sprachen und Technologien erhältlich,
         darunter JavaScript, Java, PHP, C#, C++ und so weiter. In diesem Kapitel werden Sie se-
         hen, wie das DOM mit JavaScript und PHP eingesetzt wird. DOM ist in der Lage XML-
         ähnliche Dokumente zu manipulieren (erzeugen, modifizieren, parsen, durchsuchen usw.),
         darunter auch HTML.
         Auf der Clientseite werden DOM und JavaScript für folgende Aufgaben benutzt:
            Um eine HTML-Seite zu manipulieren, während jemand auf ihr arbeitet
            Um vom Server empfangene XML-Dokumente zu lesen und zu parsen
            Um neue XML-Dokumente anzulegen

40
2.1 JavaScript und das Document Object Model

Auf der Serverseite dienen DOM und PHP zu folgenden Zwecken:
   Um XML-Dokumente zu erstellen, normalerweise zur Übermittlung an den Client
   Um XML-Dokumente zu lesen, die von verschiedenen Quellen empfangen werden
Zwei gute Einführungen in das DOM sind http://www.quirksmode.org/dom/
intro.html und http://www.javascriptkit.com/javatutors/dom.shtml. Ein schö-
nes Spiel mit DOM finden Sie unter: http://www.topxml.com/learning/games/b/
default.asp. Eine umfassende Referenz zum JavaScript-DOM gibt es unter
http://krook.org/jsdom/. Die Mozilla-Referenz zum JavaScript-DOM liegt unter
http://www.mozilla.org/docs/dom/reference/javascript.html.
Im ersten Beispiel dieses Kapitels wird das DOM von JavaScript eingesetzt, um das
HTML-Dokument zu manipulieren. Wenn Sie einer HTML-Datei JavaScript-Code in eine
HTML-Datei einbetten, so besteht eine Möglichkeit darin, den JavaScript-Code in ein
-Element innerhalb des -Elements zu schreiben. Betrachten Sie als Bei-
spiel die folgende HTML-Datei, die, wenn sie geladen wird, JavaScript-Code ausführt.
Beachten Sie das document-Objekt, ein Standardobjekt von JavaScript, das mit dem DOM
der HTML-Seite interagiert. Hier nutzen wir seine write-Methode, um die Seite mit Inhalt
zu füllen:
   
       AJAX Foundations: JavaScript and DOM
       
         // neue Variablen deklarieren
         var date = new Date();
         var hour = date.getHours();
         // die if-Anweisung wird demonstriert
         if (hour >= 22 || hour
2 Cleveres JavaScript für die Clientseite

         Die Beispiele in diesem Buch enthalten alle gültigen HTML-Code, mit Ausnahme einiger
         weniger Fälle, in denen wir die Regeln ein wenig gebeugt haben, damit der Code leichter
         zu verstehen ist. Tatsächlich halten sich aus verschiedenen Gründen allerdings nur sehr
         wenige Online-Websites genau an die Standards.
         Normalerweise sollte der JavaScript-Code in einer separaten .js-Datei angelegt sein, die
         von der .html-Datei referenziert wird. So können Sie den HTML-Code sauber halten und
         allen JavaScript-Code an einer einzigen Stelle zusammenfassen. Sie können eine Java-
         Script-Datei im HTML-Code referenzieren, indem Sie dem -Element ein Child-
         Element namens  hinzufügen:
            
               Selbst wenn zwischen den Tags  und  überhaupt kein Code stehen sollte,
               verwenden Sie bitte nicht die Kurzform  Diese verursacht nämlich Probleme mit dem Internet Explorer 6, der die
               JavaScript-Seite in einem solchen Fall nicht laden würde.

         Betrachten wir eine kurze Übung.

         Showtime: JavaScript und das DOM
         1. Legen Sie in Ihrem ajax-Ordner einen Unterordner namens foundations an. Dieser
            wird für alle Beispiele in diesem und dem nächsten Kapitel gebraucht.
         2. Im foundations-Ordner erstellen Sie einen Unterordner namens jsdom.
         3. Im Ordner jsdom legen Sie eine Datei namens jsdom.html an, die folgenden Code
            enthält:
            
                AJAX Foundations: JavaScript and DOM
                
                I love you!
              
         4. In demselben Ordner erzeugen Sie nun eine Datei namens jsdom.js und speichern
            darin folgenden Code:
            // neue Variablen deklarieren
            var date = new Date();
            var hour = date.getHours();
            // die if-Anweisung wird demonstriert
            if (hour >= 22 || hour
2.1 JavaScript und das Document Object Model

5. Laden Sie nun http://localhost/ajax/foundations/jsdom/jsdom.html in Ihren
   Webbrowser. Wenn es noch nicht sehr spät ist, erscheint die Nachricht aus Abbildung
   2.1 (wenn es 22.00 Uhr durch ist, kommt eine etwas andere, aber ebenso romantische
   Nachricht).

Abbildung 2.1 Das Hello World-Beispiel mit JavaScript und dem DOM

Was ist passiert?
Der Code ist so einfach, dass man ihn nicht weiter erläutern muss. Folgende Grundgedan-
ken sind wichtig:
   Da kein Skript auf der Serverseite (beispielsweise PHP) beteiligt ist, können Sie die
   Datei lokal direkt von der Festplatte in Ihren Browser laden, anstatt sie von einem
   HTTP-Webserver zu holen. Wenn Sie die Datei unmittelbar lokal ausführen, würde ein
   Browser sie höchstwahrscheinlich automatisch an einer lokalen Adresse wie etwa fi-
   le:///C:/Apache2/htdocs/ajax/foundations/jsdom/jsdom.html öffnen.
   Wenn Sie eine HTML-Seite mit JavaScript-Code von einem lokalen Speicherort (fi-
   le://) statt eines Webservers (http://) öffnen, kann vom Internet Explorer die War-
   nung kommen, dass Sie sensiblen Code ausführen (mehr über Sicherheit in Kapitel 3).
   Da in JavaScript Variablen nicht deklariert werden müssen, können Sie theoretisch
   auch auf die var-Schlüsselwörter verzichten. Dies wird jedoch nicht empfohlen.
   Das JavaScript-Skript läuft automatisch ab, wenn Sie die HTML-Datei öffnen. Sie
   können den Code aber auch in JavaScript-Funktionen zusammenfassen, die nur dann
   ausgeführt werden, wenn man sie explizit aufruft.
   Der JavaScript-Code wird ausgeführt bevor der andere HTML-Code geparst wird. Da-
   her wird auch seine Ausgabe vor der HTML-Ausgabe angezeigt. Beachten Sie, dass
   "Hello World!" vor "I love you!" steht.
Ein Problem mit diesem Programm besteht darin, dass Sie im JavaScript-Code nicht kon-
trollieren können, wo die Ausgabe angezeigt wird. Hier wird die JavaScript-Ausgabe zu-

                                                                                           43
2 Cleveres JavaScript für die Clientseite

         erst und der Inhalt des -Elements danach angezeigt. Dieses Szenario taugt natürlich
         noch nicht einmal für die einfachsten Anwendungen.
         Von ganz trivialen Fällen einmal abgesehen, reicht es nicht aus, einfach JavaScript-Code
         so zu schreiben, dass er ohne Umschweife sofort ausgeführt wird, wenn die HTML-Seite
         geladen wird. Normalerweise benötigen Sie mehr Kontrolle darüber, wann und wie Teile
         des JavaScript-Codes ausgeführt werden. Das typischste Szenario läuft so ab, dass Sie Ja-
         vaScript-Funktionen einsetzen, die nur dann ausgeführt werden, wenn bestimmte Ereignis-
         se (beispielsweise ein Klick auf einen Button) auf der HTML-Seite ausgelöst werden.

2.2      JavaScript-Ereignisse und das DOM

         In der folgenden Übung werden wir eine HTML-Struktur aus JavaScript-Code erzeugen.
         Wenn Sie eine Webseite vorbereiten, die dynamisch generierte Teile enthält, müssen Sie
         zuerst ein Template mit den statischen Teilen anlegen und dann für die dynamischen Teile
         Platzhalter verwenden. Diese Platzhalter müssen eindeutig zu identifizierende HTML-
         Elemente sein (also Elemente, bei denen das ID-Attribut gesetzt ist). Bisher haben wir das
         Element  als Platzhalter benutzt, aber im Laufe dieses Buchs werden Sie noch ande-
         re Beispiele sehen.
         Betrachten Sie nun das folgende HTML-Dokument:
            
                AJAX Foundations: More JavaScript and DOM
              
                Hello Dude! Here's a cool list of colors for you:
                
                  Black
                  Orange
                  Pink
                
         Angenommen, Sie möchten, dass alles in dem -Element dynamisch generiert wird. In
         einer AJAX-Anwendung setzt man hierfür ein benanntes, leeres -Element an die
         Stelle, wo etwas dynamisch generiert werden soll:
            
                AJAX Foundations: More JavaScript and DOM
              
                Hello Dude! Here's a cool list of colors for you:
                
44
Sie können auch lesen