AJAX - Kleines "Ein mal Eins" für Trojaner

Bastian Sackermann

http://samisdat.org/ajax-barcamp-ruhr

About

Was kann man googlen:

Sonst noch was

AJAX - Was ist das eigentlich?

AJAX - Was ist das eigentlich?

Definitionsversuch - Frei nach Jesse James Garrett auf adaptivepath.com

AJAX ist nichts neues, aber es bringt mehrere bekannte Techniken auf neue Art zusammen und dabei ist das Ganze (AJAX) mehr als die Summe seiner Teile.

Das J: Javascript

Javascript - Kaltstart

Das X - XML X-Beliebige Dateien

Das Ganzen macht natürlich erst richtig Sinn, wenn man statt statische .txt-Dateien zu laden mit einem Server kommuniziert.

Verschiedene Formate

Das AJAX Format der Wahl: JSON

Wenn die Wahl besteht, dann JSON!

Das A - Asynchron Aber wozu?

Asynchroner Request

Normaler HTTP vs. AJAX

Quelle: http://de.wikipedia.org/wiki/Ajax_(Programmierung)

Vor dem Einsatz von AJAX: Pro & Kontra

Pro

Vor dem Einsatz von AJAX: Pro & Kontra

Kontra

Basis & Methode

Usability & Accessibility

AJAX ist Javascript; Javscript ist eine Instance eines Browsers; ein Browser ist ein Programm; Programme läuften mit einem Betriebssytem

Das bringt eine Menge Implikationen mit, wenn man sich Gedanken über Benutzbarkeit und Zugänglichkeit macht:

Look & Feel - Browser geben Feedback

Usability - Feedback

User sind von Browsern ein Look & Feel gewöhnt, dass anzeigt, wenn etwas passiert.
AJAX sollte also auch anzeigen, wenn etwas passiert.

Usability - Das Bookmark Problem

Wenn per AJAX Teile der Seite verändert werden, dann wird die geänderte Seite nicht in der Browserhistory abgelegt und die veränderte Seite ist nicht direkt verlinkbar.

Das führt zu verschiedenen Problemen:

Der Bookmark Workaround - Server

Mit einem relativ einfachen Workaround, können AJAX-Seiten bookmarkbar und linkbar gemacht werden. Auch die Vor- und Zurück Knöpfe funktionieren! (Zumindest prinzipiell;)

Serverseitig

  1. Zu jeder URL, die per AJAX aufgerufen werden soll, existiert auch ein vollständiges HTML-Dokument.
    Es gibt keine Sackgassen, in die der USer nur per AJAX kommen können.
  2. Der Server erkennt an den Headern, dass der Request über XMLHttpRequest kam:
    In PHP
    $_SERVER["HTTP_X_REQUESTED_WITH"]
  3. Anhand des Headers wird zwischen normalen Template und JSON geswitcht.

Der Bookmark Workaround - Client

  1. Jeder AJAX-Link ist ein normaler Link auf die entsprechende HTML Seite und erhält die Klasse ajax
  2. Nach dem Laden wird jeder a.ajax geändert: Von /irgendwohin zu #irgendwohin
  3. Über eine Timerfunction wird jetzt regelmäßig die window.location.hash auf Änderungen geprüft.
  4. Bei Änderungen wird ein AJAX.Request ausgelöst.

Step-By-Step-Beispiel mit Prototype

Eine ähnliche Technik wird in den IE 8 integriet werden: Video AJAX Navigation

Der Bookmark Workaround

Wenn man den Workaround schon bei der Planung und Entwicklung berücksichtigt, dann ist der Aufwand überschaubar.

Die Vorteile:

  1. Die komplette Seite ist auch ohne Javascript zugänglich. Beispiel
  2. AJAX Inhalte können von Suchmaschinen indiziert werden.
  3. AJAX Inhalte können als Lesezeichen gespeichert werden. Beispiel
  4. AJAX Inhalte können direkt verlinkt werden.
  5. Vor- und Zurück Navigation für AJAX Inhalte. (Nicht Cross Browser!)

Danke

Jetzt gerne Feedback, Kritik und Rechtschreibfehler!