Ajax und PHP Cristian Darie, Bogdan Brinzarea, Mihai Bucica, Filip Chereches
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
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