Feb 21

Web 2.0 ist in aller Munde und dabei fällt auch meist im nächsten Satz das Wort AJAX. AJAX steht für Asynchronous JavaScript and XML. Bei dieser Technologie wird mittels eines HTTP-Requests per Active-X oder Javascript eine Seite oder ein Script aufgerufen und dessen Daten übertragen, ohne dass die Seite neu geladen werden muss. Mit AJAX kann man also eine Webanwendung stricken, die das Look an Feel einer Desktopanwendung hat. So kann man zum Beispiel eine Tabelle mit Daten dynamisch nach einer Spalte sortieren, ohne die Seite neu zu laden.

Zur Übertragung der Daten gibt es einige Formate, die sich in der Praxis bewiesen haben. Hierzu gehören u.a. XML, reST, JSON und SOAP.

Was ist JSON?
JSON steht für JavaScript Object Notation. Hierbei wird auf Anforderung mit einem Algorithmus serverseitig aus einem Objekt (z.B. einem PHP-Array) ein JSON-Objekt serialisiert. JSON-Objekte haben den Vorteil gegenüber XML, dass sie wenige Bytes für die eigenen Strukturinformationen verwenden und somit wenig Overhead beim Übertragen von Daten erzeugt wird. Will man natürlich komplexe Datenstrukturen übertragen, sollte man sich überlegen XML zu verwenden, denn hier sind die Methoden zum Zugriff auf die Baumstruktur der Daten ausgereift und verschwenden weniger Rechenleistung des Clients. Zum Übertragen von Arrays mit überschaubarer Verschachtelung ist JSON aber die richtige Wahl.

Bei der Wahl des Datenformats sollte man bedenken, dass auf Seiten des Clients zusätzlich Rechenleistung von Nöten ist, um die Daten zur Ausgabe aus dem Format zu extrahieren.

Verarbeitung
Erhält man nun von Serverseite ein JSON-Objekt, hat man zwei Methoden zur Auswahl um aus diesem Objekt ein verwendbares Javascript-Objekt zu erzeugen:

1. eval()
Mittels eval() kann man ein JSON-Objekt direkt ausführen und so zu einem benutzbaren Javascript-Objekt machen. Das hat den gewaltigen Nachteil, dass nicht vertrauenswürdige Daten ausgeführt würden könnten und somit auch schadhafter Code ausgeführt werden kann. Daher sollte man darauf verzichten.

2. JSON-Parser
Ein JSON-Parser[1] bietet ebenso die Möglichkeit aus einem JSON-Objekt ein brauchbares Javascript-Objekt zu erzeugen. Hierbei kann man entscheiden, was man mit im JSON-Objekt vorhandenen Methoden vorgeht. Man kann sie umwandeln oder auch nicht. Der hier verwendete JSON-Parser überläd bei Einbindung alle Strings, Arrays etc. und ergänzt nötige Methoden für das umwandeln in ein Javascript-Objekt. Bei Bedarf können diese dann aufgerufen werden.

Ein Beispiel:
Wir haben ein PHP-Array. Dieses wird dann mittels der in PHP 5.2 enthaltenen JSON-Bibliothek[2] codiert. Für Versionen < PHP 5.2 ist eine Extention in PECL vorhanden [3].

$Data = array
(
	array
	(
		'name' => 'Stephan',
		'ort' => 'Bonn'
	),
	array
	(
		'name' => 'Thomas',
		'ort' => 'Köln'
	)
);
echo json_encode($Data);

Diese Daten werden nun via AJAX übertragen. In der Callback-Funktion des AJAX-Objekts haben wir dann folgende Code-Stelle:

var Data = response.responseText.parseJSON();

Der Funktion parseJSON können auch noch zusätzliche Filter übergeben werden, mit denen man entscheiden kann, wie mit Methoden etc. umgegangen werden soll. Dies lassen wir hier mal außen vor. Jetzt können wir einzelne Daten hiervon ausgeben:

alert(Data[0]['name']);

Der JSON-Parser erkennt, dass es sich hierbei um ein Array handelt und wandelt es um. Es ist also recht einfach die Daten zurückzuwandeln.

So kann man einfach und schnell Daten von PHP nach Javascript übertragen und diese dort weiterverarbeiten ohne ein externes Framework einzubinden (welche natürlich auch ihre Vorteile haben).

Demnächst werde ich in einem eigenen Artikel auf AJAX mit Prototype eingehen, lasst Euch überraschen :-) .

Links
[1] http://www.json.org/
[2] http://de.php.net/json
[3] http://pecl.php.net/package/json

Post to Twitter Post to Delicious Post to Digg Post to Facebook

written by Alexander \\ tags: , , , , ,


3 Responses to “JavaScript Object Notation (JSON)”

  1. 1. Melzi Says:

    Mal wieder ein schöner Beitrag und eine gute Übersicht über den guten JSON dazu ;) .

    Ich freu mich schon auf den Prototype-Artikel.

  2. 2. Alexander Stelter Says:

    Heute möchte ich ein interessantes Framework vorstellen, welches die Entwicklung mit JavaScript extrem vereinfacht und dem Entwickler (größtenteils Cross-Browser) viele Dinge vereinfacht. Hierbei handelt es sich um Prototype. Entstanden ist es ursprünglic

  3. 3. Alexander Stelter Says:

    Wie ich vor einer Weile berichtete, kann man mit JSON eine Menge anstellen. Was mich immer ein wenig geärgert hat, wenn wir JSON und YUI gemeinsam eingesetzt haben, dass es keine integrierte Lösung gab. Man mußte immer die YUI API laden und zusätzlich die

Leave a Reply

i3Theme sponsored by Top 10 Web Hosting and Hosting in Colombia