Dienstag, 26. September 2006

Javascript

Ajax Crashkurs - Asynchronous JavaScript and XML in 5 Minuten

Wolltet ihr schon immer Ajax kennen lernen? Hier gibt es den Ajax Crashkurs.

Ajax in weniger als 5 Minuten? Dieses kleine Ajax-Tutorial bringt euch das grundlegende Wissen um Ajax-Anwendungen zu bauen und das Funktionsprinzip von Ajax zu verstehen. Vorraussetzung ist allerdings, dass ihr ein wenig Javascript könnt und ein wenig PHP-Kenntnisse mitbringt, die helfen beim verstehen des PHP-Scripts.

Ajax-Tutorial

Wir erstellen zwei Dateien. Eine Datei, mit der wir die Ajax-Anfrage starten und eine Datei, die für die Antworten zuständig ist. Die Datei ajax.html ist die Datei mit der wir den Ajax-Request bauen. Das vollständige Script steht im Listing 1. Ihr könnt die Datei auch hier fertig testen.

Listing 1 - ajax.html

Download Code!

  1.  
  2. <html>
  3. <title>Ajax-Tutorial Entwickler-Blog.de</title>
  4. <head>
  5. </head>
  6. <body>
  7. <script type="text/javascript">
  8.  
  9. // Gibt das HTTP-Request Objekts zurück
  10. function getXMLHttpRequestObject() {
  11.     var requestObject;
  12.     var browser = navigator.appName;
  13.     if(browser == "Microsoft Internet Explorer") {
  14.         requestObject = new ActiveXObject("Microsoft.XMLHTTP");
  15.     }else{
  16.         requestObject = new XMLHttpRequest();
  17.     }
  18.     return requestObject;
  19. }
  20.  
  21. // Löst eine Get-Anfrage an das Script ajaxResponse.php aus
  22. function ajaxGet(text) {
  23.     httpRequestObject.open('GET', 'ajaxResponse.php?query='+text);
  24.     httpRequestObject.onreadystatechange = ajaxEvent;
  25.     httpRequestObject.send(null);
  26. }
  27.  
  28. // Diese Funktion wird aufgerufen, wenn eine Ajax-Anfrage abgesendet wurde.
  29. function ajaxEvent() {
  30.         // Ajax-Anfrage erfolgreich?
  31.     if(httpRequestObject.readyState == 4){
  32.         // Holt die Antwort aus der Anfrage
  33.         var ajaxResponse = httpRequestObject.responseText;
  34.         // Ändert den Textinhalt, des HTML-Elements mit der ID ajax
  35.                 document.getElementById("ajax").innerHTML = ajaxResponse;
  36.     }
  37. }
  38.  
  39. // Holen des HTTP-Request Objekts
  40. var httpRequestObject = getXMLHttpRequestObject();
  41. </script>
  42. <h1 id="ajax">Text text</h1>
  43. <a href="javascript:ajaxGet('hello');">Hallo?</a><br/>
  44. <a href="javascript:ajaxGet('test');">Ajax?</a><br/>
  45. <a href="javascript:ajaxGet('42');">Wie ist die Antwort auf das Leben, dem Universum und dem ganzen Rest?</a><br/>
  46. </body>
  47. </html>
  48.  

Die andere Datei, hat den Namen ajaxResponse.php den Inhalt der Datei könnt ihr in Listing 2 sehen. Sie verarbeitet den HTTP-GET-Request und gibt entsprechend des Parameter-Wertes ($_GET['query]) etwas zurück

Listing 2 - ajaxResponse.php

Download Code!

  1.  
  2. <?php
  3. if(isset($_GET['query'])) {
  4.         switch ($_GET['query']) {
  5.                 case 'hello':
  6.                         echo 'Hallo Welt!';
  7.                         break;
  8.                 case '42':
  9.                         echo 'Die Antwort ist 42!';
  10.                         break;
  11.                 default:
  12.                         echo 'Hmm? Kenn ich nicht!';
  13.                         break;
  14.  
  15.         }
  16. }
  17. ?>
  18.  

Ajax-Script Erklärung

Das Grundlegende, was aufjedenfall gebraucht wird ist das XMLHttpRequest Object. Mit dem XMLHttpRequest ist es möglich beliebigen Daten über das HTTP-Protokoll zu transferieren.

Das XMLHttpRequest holen wir uns über die Funktion getXMLHttpRequestObject(). Desweitern wird eine Funktion benötigt, mit der wir die Ajax-Anfrage absenden können. Das macht die Funktion ajaxGet(). Schlussendlich brauchen wir noch einen Evenhandler, der Aufgerufen wird, wenn sich der der Status ändert. Der Eventhandler heisst in unserem Fall ajaxEvent().

Bei dem Aufrufen der Datei ajax.html, wird das XMLHttpRequest-Objekt instanziert. Das Objekt steht nun in der Variablen httpRequestObject bereit.

Im unteren HTML-Teil könnt ihr eine Überschrift und drei Links sehen. Im Detail nochmal in Listing 3.

Listing 3

Download Code!

  1.  
  2. <h1 id="ajax">Text text</h1>
  3. <a href="javascript:ajaxGet('hello');">Hallo?</a><br/>
  4. <a href="javascript:ajaxGet('test');">Ajax?</a><br/>
  5. <a href="javascript:ajaxGet('42');">Wie ist die Antwort auf das Leben, dem Universum und dem ganzen Rest?</a><br/>
  6.  

Klickt ihr nun auf einen Link, wird die Javascript-Funktion ajaxGet mit einem Parameter aufgerufen. Diese Funktion stellt dann eine HTTP-GET-Anfrage an das Script ajaxResponse.php.

Wie schon erwähnt, wird der Eventhandler ajaxEvent() dannach aufgerufen. Diese Funktion fügt dann als Inhalt der Überschrift das Ergebnis der Ajax-Anfrage ein.

Und schon sind wir am Ende des Ajax-Tutorials.

Ajax-Script online test.
Bewertung: keine, 0 Stimme(n) 3026 Klicks
Javascript
Von Mr.Foo in Javascript am 26.09.06@20:20 Uhr

Trackbacks
Trackback für spezifische URI dieses Eintrags

Keine Trackbacks

7 Kommentare
Ansicht der Kommentare: (Linear | Verschachtelt)

Silvan Hagen - #1 - 16.11.2006 08:54 - (Antwort)

Wow! Gut erklärt, beschäftige mich nun auch schon eine kleine Weile mit AJAX und habe sehr viel gelesen und ausprobiert, aber muss sagen. So ist es gut beschrieben.

Leider funktioniert die Demo bei mir nicht (Mac Intel OSX, Firefox 2.0).

Mr. Foo - #2 - 27.11.2006 22:45 - (Antwort)

Hallo Silvan,

also bei mir funktioniert es (Kubuntu, Firefox 2.0). Eigentlich dürften die Firefoxversionen zwischen MAC und Linux nicht unterschiedelich reagieren.

Blöde Frage, aber hast du Javascript deaktiviert?


MFG

Sebastian

Erik - #3 - 30.04.2007 16:43 - (Antwort)

Warum steht denn etwas von XML im Titel? Ich freute mich bereits um dann enttäuscht feststellen zu müssen dass der Artikel doch nicht auf die wahren Vorteile von Ajax eingeht. Schade.

Mr. Foo - #3.1 - 08.05.2007 23:26 - (Antwort)

Weil das X im Ajax von XML kommt ;-)

chris - #4 - 05.01.2008 02:43 - (Antwort)

Supergenial, sowas habe ich genau gesucht, damit kann ich eine autosuggest abfrage mit MySQL machen.
Vielen Dank

Daniel - #5 - 04.03.2008 00:13 - (Antwort)

Danke für die Einführung.

Warum funktioniert das Script nur wenn man die JavaScript Funktion im href aufruft und nicht über href="#" onlick="ajaxGet();" ?

Gruß
Daniel

Mr. Foo - #5.1 - 04.03.2008 15:21 - (Antwort)

Weil das onClick="ajaxGet();" heissen muss :-)


Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Sie können [geshi lang=LANG][/lang] Tags verwenden um Quellcode abhängig von der gewählten Programmiersprache einzubinden
 
 

Mr. Foo

Ajax Crashkurs - Asynchronous JavaScript and XML in 5 Minuten

  • Homepage

Suche

Kategorien

  • Android (2)
  • C-Sharp (4)
  • Datenbank (30)
  • Delphi (2)
  • Entwicklung (36)
  • Flash (5)
  • Games (10)
  • Gutscheine (4)
  • Hardware (14)
  • HTML CSS (16)
  • Internet (88)
  • Java (32)
  • Javascript (24)
  • Linkdump (9)
  • Linux (102)
  • Low-Level (10)
  • Lua (8)
  • Musik (9)
  • Netzwerk (25)
  • New World Order (109)
  • Perl (3)
  • PHP (130)
  • Magento (5)
  • Symfony (3)
  • Zend Framework (7)
  • Probleme und Lösungen (26)
  • Python (22)
  • Ressourcen (23)
  • Sicherheit (91)
  • Software (60)
  • Sonstiges (47)
  • Own Stuff (48)
  • Spass (46)
  • Technik / Wissenschaft (4)
  • Tips (15)
  • Weisheiten (17)
  • Windows (23)
  • Wort des Tages (15)


Alle Kategorien

Archive

  • Mai 2012
  • April 2012
  • März 2012
  • Das Neueste ...
  • Älteres ...

Abonnieren lohnt sich!

  • XML RSS 2.0 feed
  • ATOM/XML ATOM 1.0 feed
  • XML RSS 2.0 Kommentare

Tagcloud

Datenbank Entwicklung Internet Java Javascript Linux Lösung Netzwerk News New World Order PHP Problem Probleme und Lösungen Sicherheit Software Sonstiges Spass Tipp Update Windows

Beliebte Einträge

  • Magento ist scheisse (197)
  • Plugin-container.exe deaktivieren (107)
  • BWin Betrug und Abzocke bei Minigames? (65)
  • C compiler cannot create executables unter Debian (53)
  • Scheiss Linux - USB-Platte viel zu langsam (wenns mal funktioniert) (43)
  • Sicheres Kontaktformular mit PHP - Spam verhindern (37)
  • UML-Diagramme aus Java-Klassen generieren – Java2UML (28)
  • Es konnte keine TCP/IP-Verbindung mit dem Host hergestellt werden (28)
  • Option Bug im Internet Explorer bei Nutzung von innerHTML und Javascript (24)
  • Zend Studio - Javaw.exe lastet die CPU aus (24)

Kommentare

Hugo zu BWin Betrug und Abzocke bei Minigames?
So, 20.05.2012 12:25
ich habe mich gestern auf BWIN reg [...]
Ubuntu 12.04 zu The assembly mscorlib.dll was not found or could not be loaded.
Fr, 18.05.2012 17:11
Hat bei mir leider nicht geklappt. [...]
Oliver Riske zu Es konnte keine TCP/IP-Verbindung mit dem Host hergestellt werden
Di, 15.05.2012 20:38
Super Danke!
anon zu BWin Betrug und Abzocke bei Minigames?
Sa, 05.05.2012 18:43
ihr scheiss betrüger
Jürgen zu Unable to elevate error:1814 VLC Problem
Mi, 02.05.2012 16:54
So einfach ist es bei mir jedenfal [...]
 

Kontakt/Informationen