• Link zu Xing
  • Link zu LinkedIn
  • Link zu X
  • Link zu Rss dieser Seite
  • Link zu GitHub
  • Newsletter
  • Kontaktieren Sie mich
Frank W. Rahn
  • Meine BlogbeiträgeZeigt meinen Blog an
  • RessourcenZeigt Ihnen eine Auswahl von Ressourcen
    • Franks aktueller IT-Werkzeugkasten
      • Diese Werkzeuge setze ich zur Zeit ein
    • Meine Präsentationen
      • Zeigt Ihnen meine Präsentationen
    • Weblinks
      • Meine Linksammlung
    • Buchtipps
      • Eine Liste von mir empfohlener Literatur
    • XML-Namespace
      • Zeigt meinem XML-Namespace
  • Franks aktueller IT-WerkzeugkastenDiese Werkzeuge setze ich zur Zeit ein
  • Meine PräsentationenZeigt Ihnen meine Präsentationen
  • WeblinksMeine Linksammlung
  • BuchtippsEine Liste von mir empfohlener Literatur
  • XML-NamespaceZeigt meinem XML-Namespace
  • Über mich …Die persönlichen Informationen über den Softwarearchitekt Frank Rahn
  • Click to open the search input field Click to open the search input field Suche
  • Menü Menü
Howto

AJAX: Mühelos einsetzen (Asynchronous Javascript and XML)

AJAX - Asynchronous Javascript and XML

Eine kurze Erläuterung mit einem einfachen Beispiel, wie die AJAX-Technologie im HTML-Seiten eingesetzt werden kann.

Inhaltsverzeichnis [anzeigen]

  • Die Funktionsweise von AJAX
  • Die Nachteile der AJAX Technologie
  • Ein AJAX Beispiel mit XMLHttpRequest
  • Die Literaturempfehlungen

Die Funktionsweise von AJAX

Bei AJAX handelt sich um ein Verfahren, bei dem aus einer HTML-Seite im Webbrowser Daten mit dem Web-Server ausgetauscht werden. Normalerweise wird bei einer Benutzeraktion immer eine Anfrage an den Server gerichtet und eine HTML-Seite als Antwort empfangen und dargestellt. Mit AJAX dagegen werden per JavaScript asynchrone Daten (z. B. XML) an den Server gesendet. Diese werden auf dem Server verarbeitet und in der Antwort werden nur die benötigten Daten gesendet. Diese Daten werden dann mit DHTML dargestellt.

Die Nachteile der AJAX Technologie

  • Die JavaScript Unterstützung im Webbrowser muss aktiviert sein.
  • Im Microsoft Internet Webbrowser muss das Ausführen aktiver Inhalte erlaubt sein.
  • Die verschiedenen Eigenarten der Webbrowser müssen berücksichtigt werden.
  • Die Funktionalität des Zurück-Buttons muss berücksichtigt oder ausgeschaltet werden.
  • Wenn der Benutzer eine Bookmark setzt, gelangt er auf die entsprechende Seite aber nicht in den gleichen Zustand.
  • Auch mit dieser Lösung muss die Zeit zwischen Anfrage und Antwort (Latenzzeit) berücksichtigt werden. Insbesondere, weil der Benutzer ohne zusätzliche Maßnahmen nicht erkennt, dass eine Anfrage im Hintergrund erfolgt.

Ein AJAX Beispiel mit XMLHttpRequest

Wenn Sie unten den Schalter Lade Inhalt betätigen, wird der Inhalt per AJAX ausgetauscht. Dieses Beispiel arbeitet mit dem XMLHttpRequest auf eine statische XML-Datei. Getestet wurde dieses mit Firefox v1.0.5 und Microsoft Internet Explorer v6.0 SP2.

Lade InhaltZurücksetzen

Leerer Inhalt…

Mit den folgenden Anweisungen wird ein XMLHttpRequest erzeugt. Für den IE muss ein ActiveX-Objekt des Microsoft XML-Parser instanziert werden.

var request;
if (window.XMLHttpRequest) {
    // Non-IE browsers: Mozilla, Opera, Safari and Konqueror
    request = new XMLHttpRequest();
} else if (window.ActiveXObject) {
    // IE browser
    try {
        // New style
        request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
        // Old style
        request = new ActiveXObject("Microsoft.XMLHTTP");
    }
}

Als nächstes wird die JavaScript Funktion processStateChange() gesetzt, welche als Event-Handler für AJAX fungiert. Die Funktion des Event-Handlers wird weiter unten beschrieben.

request.onreadystatechange = processStateChange;

Im nächsten Schritt wird die HTTP-Verbindung zum Server geöffnet. Dazu wird hier die Methode POST gewählt. Möglich sind aber auch noch GET, PUT oder HEAD. Der letzte Parameter bestimmt, ob die Datenübertragung synchron (false) oder asynchron (true) durchgeführt wird. Die URL kann übrigens aus Sicherheitsgründen nur auf die gleiche Domain der aktuellen HTML-Seite gehen. Zusätzlich kann auch ein Benutzername und ein Passwort angegeben werden: open(method, url, asynchronous-flag, username, password).

request.open("POST", url, true);

Sobald die Verbindung steht, können die Daten (xmldata) gesendet werden. In diesem Beispiel können optional Daten in Form einer XML versendet werden. Ist dieses der Fall, xmldata != null, müssen einige Parameter im Header des Request gesetzt werden. Danach kann der Request abgesendet werden. Die Methode send() wird direkt zurückkehren, da wir eine asynchrone Kommunikation gewählt haben. Im anderen Fall hätte diese Methode blockiert, bis die Kommunikation abgeschlossen ist.

if (xmldata) {
    request.setRequestHeader("Content-Type", "text/xml");
    request.setRequestHeader("Content-Length", xmldata.length);
}

request.send(xmldata);

Die weitere Verarbeitung der Antwort findet im Event-Handler statt. Insgesamt sind vier Verbindungszustände definiert, dabei bedeutet der Wert 4, dass die Antwort vom Server vollständig empfangen ist. Dieser Status dürfte der Wichtigste von allen sein (Quelle). Die Bearbeitung ist in eine Funktion responseComplete() ausgelagert worden.

function processStateChange() {
    switch (request.readyState) {
    case 0: // uninitialized
    case 1: // loading
    case 2: // loaded
    case 3: // interactive
        break;

    case 4: // complete
        responseComplete();
        break;

    default:
        errorHandler();
        break;
    }
}

Zuvor wurde in der aktuellen HTML-Seite ein Bereich für die Aufnahme der Antwort vorbereitet.

<div id="content">
    <p>Dieser Bereich ist leer.</p>
</div>

Als nächstes wird mit der DOM-Methode getElementById() dieses HTML-Element gesucht. Falls dieses Element nicht gefunden wird, wird in der Statuszeile des Browsers eine Fehlermeldung angezeigt. Als nächstes muss die Antwort geprüft werden. Im Falle des HTTP-Codes 200 ist alles in Ordnung, ansonsten wird der Text des DIV-Elements durch eine Fehlermeldung ersetzt (die Methode statusText() liefert die Meldung zum HTTP-Status). Die Antwort wird mit der Methode responseText() als eine Zeichenkette abgefragt. Mit der Methode responseXML() kann die Antwort auch als DOM-Dokument abgefragt werden, wenn der Server die Daten mit dem MIME-Type text/xml gesendet hat.

function responseComplete() {
    contentDiv = document.getElementById("content");

    if (contentDiv) {
        if (request.status == 200) {
            response = request.responseText;
            contentDiv.innerHTML = response;
        } else {
            contentDiv.innerHTML = "<p style='style'>Error: Status " + request.status + ", Message: " + request.statusText + "</p>";
        }
    } else {
        window.status = "No Content-DIV found";
    }
}

Zum Abschluss noch die Funktion errorHandler(). Diese wird allerdings nur aufgerufen, wenn ein nicht abgefangener Verbindungsstatus vorliegt.

function errorHandler() {
    contentDiv = document.getElementById("content");
    if (contentDiv) {
        contentDiv.innerHTML = "<p style='style'>" + "Error: Unknown Ready State</p>";
    } else {
        window.status = "No Content-DIV found and unknown Ready State";
    }
}

Hier ist noch ein kleines Beispiel, wie prinzipiell eine XML-Antwort verarbeitet werden kann.

var response = request.responseXML;
var body = response.getElementsByTagName("body");
...

Die Literaturempfehlungen

  • Ajax (Programmierung)
  • AJAX. schnell + kompakt (*)
  • Praxiswissen Ajax. oreillys basics. (*)

  • Über
  • Letzte Artikel
Frank Rahn
Frank Rahn
Frank Rahn ist Softwarearchitekt. Er unterstützt bei der Konzeption von Softwarearchitekturen mit Java-Technologie. Folge Sie ihm auf Facebook oder Twitter.

Benötigen Sie Unterstützung? Kontaktieren Sie ihn.

Hat Ihnen dieser Beitrag gefallen? Wir würden uns über Ihren Kommentar freuen! Bitte verwenden Sie Ihren bürgerlichen Namen.
Frank Rahn
Letzte Artikel von Frank Rahn (Alle anzeigen)
  • Wer ist der optimale Java Bean Mapper? - Freitag, 22. September 2023
  • Spring Boot Webanwendung: Die ersten Schritte (Tutorial) - Montag, 28. März 2016
  • Mainframe-Zugriff via Java - Sonntag, 04. Mai 2014
0 Kommentare/von Frank Rahn
Schlagworte: AJAX, DHTML, HTML, HTTP, JavaScript, XML
Eintrag teilen
  • Teilen auf X
  • Teilen auf WhatsApp
  • Teilen auf LinkedIn
  • Per E-Mail teilen
  • Teilen auf Xing
https://www.frank-rahn.de/wp-content/uploads/AJAX-Asynchronous-Javascript-and-XML.jpg 924 1404 Frank Rahn /wp-content/uploads/logo.png Frank Rahn2006-07-03 12:13:092022-09-27 19:11:27AJAX: Mühelos einsetzen (Asynchronous Javascript and XML)
Das könnte Dich auch interessieren
Die ApplicationContexte einer einfachen Spring Webanwendung Spring mit einer einfachen Webanwendung (Tutorial)
Der Service der Fahrerverwaltung Spring mit einer Webanwendung mit JPA und Validierung (Tutorial)
Die Anmeldemaske der Webanwendung Spring Security mit einer Webanwendung (Tutorial)
Die REST-API des Webservice der Fahrerverwaltung Spring mit RESTful Webservice (Tutortial)
Klassendiagramm dieses Beispiels Spring mit AOP (Tutorial)
Klassendiagramm dieses Beispiels Spring an einem einfachem Beispiel (Tutorial)
0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Ihre E-Mail-Adresse wird nicht veröffentlicht. Ihr Kommentar wird verschlüsselt an meinen Server gesendet. Erforderliche Felder sind mit * markiert.

Weitere Informationen und Widerrufshinweise finden Sie in meiner Datenschutzerklärung.

Wollen Sie kein neuen Beiträge mehr verpassen?
Dann abonnieren Sie bitte meinen Newsletter.
Meinen Newsletter abonnieren

Themen

  • Wer ist der optimale Java Bean Mapper?
  • Einführung in das Spring Framework, Boot, Batch, Data, REST, Security, Web, …
  • Franks aktueller IT-Werkzeugkasten
  • Git, GitHub, EGit, …

Navigation

  • Buchtipps
  • Newsletter
  • Weblinks
Search Search

Werbung

  • JProfiler
Beliebt
  • Das Klassendiagramm für den Java Bean Mapper Test am Beispiel "ByHand"
    Wer ist der optimale Java Bean Mapper?Freitag, 22. September 2023 - 20:59 Uhr
  • Das offizielle Logo von EGit
    GitHub mit Eclipse (EGit)Freitag, 26. Oktober 2012 - 16:15 Uhr
  • Grobe Übersicht üder den Spring Framework Container
    Einführung in das Spring FrameworkSonntag, 01. Mai 2011 - 18:30 Uhr
  • Die Stored Procedure "searchPersons" mit User-defined Types (UDT)
    Spring und Stored Procedure mit User-defined Types (Tut...Freitag, 26. Oktober 2012 - 21:45 Uhr
  • Spring Boot Webanwendung
    Spring Boot Webanwendung: Die ersten Schritte (Tutorial...Montag, 28. März 2016 - 16:29 Uhr
Schlagworte
Annotations AOP Architektur Autorisierung Cookies CRUD DAO DI Git HTML HTTP IoC Java Java EE Java SE JPA JSR Linux MVC Open Source Software PDF POJO REST (RESTful) ROCA Self-contained Systems Serviceorientierte Shell Sicherheit (Security) SOAP Spring SQL SVN Test Toolchain URI URL URN User-defined Type Versionsverwaltung VPN Webservice WS-* WSDL XML XML-Schema

Blogarchiv

Links

Mastodon
Twitter
LinkedIn
Xing
GitHub

Lizenz

Creative Commons Lizenzvertrag Die Texte (nicht Bilder) von Frank Rahn stehen unter einer Creative Commons Namensnennung - Keine Bearbeitungen 4.0 Deutschland Lizenz.

Affiliate-Links

Die mit (*) gekennzeichnete Links sind sogenannte Affiliate-Links. Kommt über einen solchen Link ein Einkauf zustande, werde ich mit einer Provision beteiligt. Für Sie entstehen dabei keine Mehrkosten. Wo, wann und wie Sie ein Produkt kaufen, bleibt natürlich Ihnen überlassen.

Blogkategorien

Copyright © Frank W. Rahn
  • Impressum / HaftungsausschlussDie notwendigen gesetzlichen Angaben dieser Webseite von Frank Rahn
  • DatenschutzerklärungDie Datenschutzerklärung von Frank Rahn
  • NewsletterKeine neuen Beiträge mehr verpassen!
  • BildnachweisDer komplette Bildnachweis von Frank Rahn
Link to: Serviceorientierte Architektur für WebSphere Link to: Serviceorientierte Architektur für WebSphere Serviceorientierte Architektur für WebSphereServiceorientierte Architektur für WebSphere und WebSphere Portal Link to: LVM: Eine Festplatte einfach aus dem LVM nehmen Link to: LVM: Eine Festplatte einfach aus dem LVM nehmen LVM: Logical Volume ManagerLVM: Eine Festplatte einfach aus dem LVM nehmen
Nach oben scrollen Nach oben scrollen Nach oben scrollen

Wir setzen auf unserer Webseite verschiedene Arten von Cookies ein, die auf Ihrem Gerät gespeichert werden. Einige dieser Cookies sind für die einwandfreie Funktion der Webseite notwendig, während andere Cookies Ihnen ein besseres Besuchererlebnis bieten.

DatenschutzerklärungImpressumAlle Cookies akzeptierenKeine Cookies akzeptierenIndividuelle Cookie-Einstellungen vornehmen

Cookie- und Datenschutzeinstellungen



Wie wir Cookies verwenden

Wir setzen auf unserer Webseite verschiedene Arten von Cookies ein, die auf Ihrem Gerät gespeichert werden.

Einige dieser Cookies sind für die einwandfreie Funktion der Webseite notwendig, während andere Cookies Ihnen ein besseres Besuchererlebnis bieten.

Klicken Sie links auf die verschiedenen Reitern, um mehr zu erfahren. Sie können auch einige Cookie-Einstellungen individuell anpassen. Beachten Sie, dass das Blockieren einiger Cookies die einwandfreie Funktion unserer Webseite beeinträchtigt.

Technisch notwendige Cookies

Diese Cookies sind unbedingt erforderlich, denn sie ermöglichen grundlegende Funktionen und sind für die einwandfreie Funktion der Webseite erforderlich.

Sie können diese Cookies jederzeit blockieren oder löschen, indem Sie Ihre Browsereinstellungen ändern und die Blockierung aller Cookies auf dieser Webseite erzwingen. Leider werden Sie dann immer wieder gefragt, ob Sie Cookies akzeptieren oder ablehnen wollen, wenn Sie unsere Webseite erneut besuchen.

Wir setzen die Cookies aviaPrivacyEssentialCookiesEnabled, aviaPrivacyMustOptInSetting, aviaPrivacyRefuseCookiesHideBar und aviaCookieConsent ein, um Ihre individuellen Cookie-Einstellungen zu speichern. Diese Informationen geben wir an keinen Drittanbietern weiter.

Diese Cookies haben eine Laufzeit von einem Jahr, dann müssen Sie die Einstellungen wiederholen.

Die VG WORT setzt das Sitzungscookie srp zur Messung von Zugriffen auf Texten, um die Kopierwahrscheinlichkeit des Textes zu erfassen. Damit partizipieren ich an den Ausschüttungen der VG WORT, welche die gesetzliche Vergütung für die Nutzungen urheberrechtlich geschützter Werke gemäß § 53 UrhG sicherstellen. Das Cookie wird dazu verwendet, um den Nutzer zu identifizieren und ggf. Daten mehrerer Aufrufe von Texten miteinander verknüpfen zu können.

Nach Angaben der VG WORT stellt das eingesetzte Verfahren sicher, dass einzelne Nutzer oder ihr Leseverhalten nicht ermittelbar sind, wenn die Anzahl der Textaufrufe gezählt wird. Alle von der VG Wort erfassten Daten werden sofort sicher verschlüsselt. Der Einsatz des Zählpixels wurde durch das Bayerische Landesamt für Datenschutzaufsicht begutachtet und als datenschutzkonform bewertet.

Datenschutzerklärung der VG WORT

Marketing-Cookies

Die Marketing-Cookies werden von Drittanbietern oder Publishern, wie z. B. Google Analytics, verwendet, um personalisierte Werbung anzuzeigen. Sie tun dies, indem sie Besucher über Webseiten hinweg verfolgen (Tracking).

Wir setzen keine Marketing-Cookies ein.

Datenschutzbestimmungen

Sie können unsere Cookies und Datenschutzeinstellungen im Detail in unserer Datenschutzerklärung nachlesen.

Cookie-Einstellungen übernehmenKeine Cookies akzeptieren
Nachrichtenleiste öffnen Nachrichtenleiste öffnen Nachrichtenleiste öffnen