<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RE-Design - Enrico Reinsdorf &#187; Webanwendung</title>
	<atom:link href="http://www.re-design.de/tag/webanwendung/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.re-design.de</link>
	<description>Trainer für Konzeption und Umsetzung von medialen Internet-Projekten</description>
	<lastBuildDate>Fri, 28 Oct 2011 19:26:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>AJAX Abressbuch &#8211; Tutorial Teil 3</title>
		<link>http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/</link>
		<comments>http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/#comments</comments>
		<pubDate>Sun, 23 Dec 2007 00:00:24 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Webanwendung]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=96</guid>
		<description><![CDATA[Im dritten Teil meines Tutorials möchte ich euch zeigen wie ich per JavaScript eine Verbindung zum Server aufbaue und Daten zum Server schicke bzw. vom Server hole. Durch die Beschreibung in Teil 1 und Teil 2 meines Tutorials habe ich hoffentlich eine gute Basis geschaffen einen Schritt weiter zu gehen. Ok, als erstes wieder einmal [...]]]></description>
			<content:encoded><![CDATA[<p>Im dritten Teil meines Tutorials möchte ich euch zeigen wie ich per JavaScript eine Verbindung zum Server aufbaue und Daten zum Server schicke bzw. vom Server hole. Durch die Beschreibung in <a title="AJAX Adressbuch Teil 1" href="http://www.re-design.de/workbook/?p=89">Teil 1</a> und <a title="AJAX Adressbuch Teil 2" href="http://www.re-design.de/workbook/?p=91">Teil 2</a> meines Tutorials habe ich hoffentlich eine gute Basis geschaffen einen Schritt weiter zu gehen.</p>
<p><span id="more-96"></span></p>
<p>Ok, als erstes wieder einmal die Zusammenfassung aller Eigenschaften und Methoden der RED-Ajax-Objektes.</p>
<ol class="Sourcecode">
<li><code>// JavaScript Document</code></li>
<li><code>var RED_Ajax =</code></li>
<li><code>{</code></li>
<li><code> req : null,</code></li>
<li><code> url : null,</code></li>
<li><code> method : 'GET',</code></li>
<li><code> async : false,</code></li>
<li><code> body : null,</code></li>
<li><code> headers : [],</code></li>
<li><code> timer : null,</code></li>
<li><code> responseXML : null,</code></li>
<li><code> responseText : null,</code></li>
<li><code> init : function()</code> <code>{</code> <code>},</code></li>
<li><code> run : function()</code> <code>{</code> <code>},</code></li>
<li><code> header : function() </code><code>{</code><code>},<br />
</code></li>
<li><code> response : function()</code> <code>{</code><code>},<br />
</code></li>
<li><code> callback : function() {},</code></li>
<li><code> update : function() {},</code></li>
<li><code> error : function()</code> <code>{</code> <code>}</code></li>
<li><code>}</code></li>
</ol>
<p>Ich werde jetzt nicht alle Eigenschaften im Detail erklären, denn das passiert auf jeden Fall noch bei der Erklärung der einzelnen Methoden. Ich fange lieber direkt mit den Methoden an.</p>
<ol class="Sourcecode">
<li><code> init : function()</code></li>
<li><code> {</code></li>
<li><code> this.req = (window.XMLHttpRequest)</code></li>
<li><code> ?</code></li>
<li><code> new XMLHttpRequest()</code></li>
<li><code> :</code></li>
<li><code> ((window.ActiveXObject)</code></li>
<li><code> ?</code></li>
<li><code> new ActiveXObject('Microsoft.XMLHTTP')</code></li>
<li><code> :</code></li>
<li><code> null</code></li>
<li><code> );</code></li>
<li></li>
<li><code> if(this.req != null)</code></li>
<li><code> {</code></li>
<li><code> this.req.onreadystatechange = this.response;</code></li>
<li><code> }</code></li>
<li><code> },</code></li>
</ol>
<p>Wie immer gibt es bei mir eine <code>init()</code>-Methode. Diese hier legt in der reg-Eigenschaft ein Objekt ab, welche eine Verbindung zum Server aufbauen kann. Da jeder Browser ein anderes Objekt dazu benutzt, muss hier immer erst noch geprüft werden ob das ganze auch funktioniert. Wenn alles geklappt hat wird noch auf den readystatechange-Event ein Methodenverweise gemacht.</p>
<ol class="Sourcecode">
<li><code> run : function(u,m,f,b)</code></li>
<li><code> {</code></li>
<li><code> this.method = m || this.method;</code></li>
<li><code> this.async = f || this.async;</code></li>
<li><code> this.body = b || this.body;</code></li>
<li><code> this.url = u;</code></li>
<li><code> if(this.req != null)</code></li>
<li><code> {</code></li>
<li><code> this.req.open(this.method, this.url, this.async);</code></li>
<li><code> if(this.headers.length &gt; 0)</code></li>
<li><code> {</code></li>
<li><code> for(var i=0; i&lt;this.headers.length; i+=2)</code></li>
<li><code> {</code></li>
<li><code> this.req.setRequestHeader(this.headers[i], this.headers[i+1]);</code></li>
<li><code> }</code></li>
<li><code> }</code></li>
<li><code> this.req.send(this.body);</code></li>
<li><code> }</code></li>
<li><code> },</code></li>
</ol>
<p>Um dann aber auch die eigentlichen Daten vom bzw. zum Server zu schicken gibt es die <code>run()</code>-Methode. Ihr kann bis zu 4 Parameter mit übergeben werden, wobei der erste, die <abbr title="Uniform Resource Location">URL</abbr>-Angabe, nur Pflicht ist. Die weiteren Parameter sind die Übertragungsmethode (<code>GET</code> oder <code>POST</code>), ob die Ubertragung synchron (<code>true</code>) oder asynchron (<code>false</code>) stattfinden soll und der beim Senden mitgelieferte Body.</p>
<p>Bevor der Request aber geschickt wird, werden die im Vorfeld gesetzte Header-Angaben verarbeitet.</p>
<ol class="Sourcecode">
<li><code> header : function(k,v)</code></li>
<li><code> {</code></li>
<li><code> if(k != null)</code></li>
<li><code> {</code></li>
<li><code> this.headers.push(k);</code></li>
<li><code> this.headers.push(v);</code></li>
<li><code> }</code></li>
<li><code> }, </code></li>
</ol>
<p>Um eine Header-Angabe, die später mit übertragen werden soll, zu setzten, reicht es die <code>header()</code>-Methode mit ihren beiden Parametern <code>key</code> und <code>value</code> aufzurufen.</p>
<ol class="Sourcecode">
<li><code> response : function()</code></li>
<li><code> {</code></li>
<li><code> var a = ajax.req;</code></li>
<li><code> switch(a.readyState)</code></li>
<li><code> {</code></li>
<li><code> case 1:</code></li>
<li><code> break;</code></li>
<li><code> case 2:</code></li>
<li><code> this.timer = window.setTimeout(this.error, 10000);</code></li>
<li><code> break;</code></li>
<li><code> case 3: </code></li>
<li><code> this.timer = window.setTimeout(this.error, 10000);</code></li>
<li><code> break;</code></li>
<li><code> case 4:</code></li>
<li><code> window.clearTimeout(this.timer);</code></li>
<li><code> if(a.status==200 || a.statusText=='OK')</code></li>
<li><code> {</code></li>
<li><code> RED_Ajax.responseXML = a.responseXML;</code></li>
<li><code> RED_Ajax.responseText = a.responseText;</code></li>
<li><code> RED_Ajax.callback();</code></li>
<li><code> }</code></li>
<li><code> }</code></li>
<li><code> }, </code></li>
</ol>
<p>Beim Ausführen der Sende- bzw. Empfang-Vorganges durchläuft das Verbindungsobjekt verschiedene Stadien, die in der <code>response()</code>-Methode geprüft werden. Folgende Stati gibt es:</p>
<ol>
<li>Das Verbindungsobjekt existiert aber die <code>open()</code>-Methode wurde noch nicht aufgerufen.</li>
<li>Die <code>send()</code>-Methode wurde noch nicht ausgeführt.</li>
<li>Die <code>send()</code>-Methode wurde zwar ausgeführt, aber der Server hat noch nichts zurück geschickt.</li>
<li>Der Server hat angefangen Daten zu übermitteln, aber ist damit noch nicht fertig.</li>
<li>Der Übermittlungsvorgang wurde beendet und alle Date sind angekommen.</li>
</ol>
<p>Um den Übertragungsvorgang auch irgendwann abzubrechen, falls ein Fehler aufgetreten ist, habe ich im Status 2 und 3 eine Timeout eingefügt und hebe ihn im Status 4 wieder auf, da da ja alles angekommen ist. Wenn dann auch noch der Server mit &#8220;alles ok&#8221; übertragen hat, dann werden die übertragenen Werte einmal als reine Text und als <abbr title="Extentable Markup Language">XML</abbr>-Objekt abgespeichert. Zum Schluss rufe ich nur noch die <code>callback()</code>-Methode auf.</p>
<ol class="Sourcecode">
<li><code> callback : function(){},</code></li>
<li><code> update : function(){}</code>,</li>
</ol>
<p>Meine <code>callback()</code>-Methode ist ein sogenannter Huck und muss erst noch definiert werden. Ich habe deshalb offen gelassen, weil die Verarbeitung der übertragenen Daten sehr unterschiedlich sein kann. In Teil 2 habe ich erklärt wo und wie man diese Definition einsetzt.</p>
<p>Auch habe ich eine <code>update()</code>-Methode zwar eingesetzt, aber noch nicht definiert. Hier lasse ich mir die Möglichkeit offen zu einem späteren Zeitpunkt einen zyklischen Aufruf des Server zu bauen.</p>
<ol class="Sourcecode">
<li><code> error : function()</code></li>
<li><code> {</code></li>
<li><code> alert('Die Zeit ist um!');</code></li>
<li><code> this.req.abort();</code></li>
<li><code> }</code></li>
</ol>
<p>Meine letzte Methode ist die <code>error()</code>-Methode. Sie dient ausschließlich dazu bei zu langen Ladezeiten diesen Vorgang abzugrechen.</p>
<p>Wie immer gibt es zum Schluss den Download der beschriebenen Dateien:</p>
<ul>
<li><a title="RED_AJAX Datei" href="ftp://weblabor.re-design.de/AJAX-Adressbuch.zip">RED_AJAX Datei</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/" title="AJAX Adressbuch &#8211; Tutorial Teil 1">AJAX Adressbuch &#8211; Tutorial Teil 1</a></li><li><a href="http://www.re-design.de/2007/12/24/ajax-adressbuch-tutorial-teil-4/" title="AJAX Adressbuch &#8211; Tutorial Teil 4">AJAX Adressbuch &#8211; Tutorial Teil 4</a></li><li><a href="http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/" title="Slideshow mit einer HTML-Seite Teil 2">Slideshow mit einer HTML-Seite Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/" title="Slideshow mit einer HTML-Seite Teil 1">Slideshow mit einer HTML-Seite Teil 1</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AJAX Adressbuch &#8211; Tutorial Teil 1</title>
		<link>http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/</link>
		<comments>http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 00:00:56 +0000</pubDate>
		<dc:creator>Enrico Reinsdorf</dc:creator>
				<category><![CDATA[Adventskalender 2007]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Webanwendung]]></category>

		<guid isPermaLink="false">http://www.re-design.de/workbook/?p=89</guid>
		<description><![CDATA[Nun möchte ich euch wieder einmal ein Tutorial schenken in dem ich zeigt wie man eine kleine Mini-Webanwendung erstellt. Da ich euch letztens schon mal eine kleine Slideshow mit HTML, CSS (Teil 1) und JavaScript (Teil 2) gezeigt habe, glaube ich dass dieses hier auch sehr interessant sein dürfte. In diesem Tutorial möcht ich euch [...]]]></description>
			<content:encoded><![CDATA[<p>Nun möchte ich euch wieder einmal ein Tutorial schenken in dem ich zeigt wie man eine kleine Mini-Webanwendung erstellt. Da ich euch letztens schon mal eine kleine Slideshow mit <abbr title="Hypertext MArkup Language">HTML</abbr>, <abbr title="Cascading Style Sheet">CSS</abbr> (<a title="Slideshow mit einer HTML-Seite Teil 1" href="http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/">Teil 1</a>) und JavaScript (<a title="Slideshow mit einer HTML-Seite Teil 2" href="http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/">Teil 2</a>) gezeigt habe, glaube ich dass dieses hier auch sehr interessant sein dürfte.</p>
<p>In diesem Tutorial möcht ich euch die Entwicklung, bzw. die wichtigsten Schritt zum Erstellen eines Web-Adressbuches zeigen. Dabei habe ich alles in 3 Teile aufgeteilt. Dass heißt heute zeige ich euch das Interface der Webanwendung, also die HTML-Datei und das dazugehörige Design. Morgen gibt es dann die clientseitige und übermorgen die serverseitige Programmierung.</p>
<p><span id="more-89"></span></p>
<ol class="Sourcecode">
<li><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</code></li>
<li><code>&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;</code></li>
<li><code>&lt;head&gt;</code></li>
<li><code>&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;</code></li>
<li><code>&lt;title&gt;RE-Design - AJAX - Adressbuch&lt;/title&gt;</code> <code><br />
</code></li>
<li><code>&lt;link rel="stylesheet" href="adressbook.css" type="text/css" media="screen" /&gt;</code></li>
<li><code>&lt;/head&gt;</code></li>
<li><code>&lt;body&gt;</code></li>
<li><code> &lt;div class="RED_Adrbook"&gt;</code></li>
<li><code> &lt;h1&gt;Adressbuch Demo&lt;/h1&gt;</code></li>
<li><code> &lt;noscript&gt;</code></li>
<li><code> &lt;p&gt;Ohne JavaScript ist hier nix los.&lt;/p&gt;</code></li>
<li><code> &lt;/noscript&gt;</code></li>
<li><code> &lt;form id="RED_Book"&gt;</code></li>
<li><code> &lt;table&gt;</code></li>
<li><code> &lt;tr&gt;</code></li>
<li><code> &lt;th&gt;ID:&lt;/th&gt;</code></li>
<li><code> &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt;</code></li>
<li><code> &lt;/tr&gt;</code></li>
<li><code> &lt;tr&gt;</code></li>
<li><code> &lt;th&gt;Name:&lt;/th&gt;</code></li>
<li><code> &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt;</code></li>
<li><code> &lt;/tr&gt;</code></li>
<li><code> &lt;tr&gt;</code></li>
<li><code> &lt;th&gt;Vorname:&lt;/th&gt;</code></li>
<li><code> &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt;</code></li>
<li><code> &lt;/tr&gt;</code></li>
<li><code> &lt;tr&gt;</code></li>
<li><code> &lt;th&gt;Email:&lt;/th&gt;</code></li>
<li><code> &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt;</code></li>
<li><code> &lt;/tr&gt;</code></li>
<li><code> &lt;tr&gt;</code></li>
<li><code> &lt;th&gt;Telefon:&lt;/th&gt;</code></li>
<li><code> &lt;td&gt;&lt;span&gt;&lt;/span&gt;&lt;/td&gt;</code></li>
<li><code> &lt;/tr&gt;</code></li>
<li><code> &lt;/table&gt;</code></li>
<li><code> &lt;ul class="RED_Buttons"&gt;</code></li>
<li><code> &lt;li&gt;&lt;a id="btn_prev"&gt;previous&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code> &lt;li&gt;&lt;a id="btn_next"&gt;next&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code> &lt;li&gt;&lt;a id="btn_edit"&gt;edit&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code> </code><code>&lt;li&gt;&lt;a id="btn_add"&gt;add&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code> &lt;li&gt;&lt;a id="btn_remove"&gt;delete&lt;/a&gt;&lt;/li&gt;</code></li>
<li><code> &lt;/ul&gt;</code></li>
<li><code> &lt;/form&gt;</code></li>
<li><code> &lt;/div&gt;</code></li>
<li><code>&lt;/body&gt;</code></li>
<li><code>&lt;/html&gt;</code></li>
</ol>
<p>Wie ihr seht ist in diesem Quellcode keine besonderen Tricks enthalten. An Anfang lade ich noch das externe Design. Die gesamte Anwendung ist dann in eine <code>&lt;div&gt;</code>-Container gebettet und die einzelnen Ein- und Ausgabefelder sind in eine Tabelle integriert. Dort wo später die Ein- und Ausgabe erfolgen soll habe ich <code>&lt;span&gt;</code>-Tags gesetzt um später einfacher per JavaScript darauf zu zugreifen.</p>
<p>Die Button zur Steuerung dieser Anwendung habe ich dann unterhalb der Tabelle un eine Liste leget. Es sind einfache Links, die aber kein Ziel haben. Klar sie sollen ja auch nicht irgendwohin anderes gehen!</p>
<ol class="Sourcecode">
<li><code>@charset "utf-8";</code></li>
<li><code>/* CSS Document */</code></li>
<li><code>body</code></li>
<li><code>{</code></li>
<li><code> margin:0 auto;</code></li>
<li><code> padding:0;</code></li>
<li><code> text-align:center;</code></li>
<li><code> width:28em;</code></li>
<li><code>}</code></li>
<li><code>th, td</code></li>
<li><code>{</code></li>
<li><code> vertical-align:top;</code></li>
<li><code>}</code></li>
</ol>
<p>Als erstes lege ich in der CSS-Datei fest wie die gesamte Seite auszusehen hat. Dabei beschränke ich mich hier erstmal nur auf die Zentrierung des Inhaltes und die Definierung der Gesamtbreite. Weiterhin werden alle Zellen der Tabelle vertikal oben ausgerichtet.</p>
<ol class="Sourcecode">
<li><code>.RED_Adrbook</code></li>
<li><code>{</code></li>
<li><code> margin: 1em 0 0;</code></li>
<li><code> padding:1em;</code></li>
<li><code> background-color:#fc3;</code></li>
<li><code> border:thin solid #960;</code></li>
<li><code> text-align:left;</code></li>
<li><code> font-family: Verdana, Arial, Helvetica, sans-serif;</code></li>
<li><code>}</code></li>
<li><code>.RED_Book table {</code></li>
<li><code> width:28em;</code></li>
<li><code> border-collapse:collapse;</code></li>
<li><code>}</code></li>
<li><code>.RED_Book th</code></li>
<li><code>{</code></li>
<li><code> text-align:left;</code></li>
<li><code> width: 6em;</code></li>
<li><code>}</code></li>
<li><code>.RED_Book h1</code></li>
<li><code>{</code></li>
<li><code> font-size:1.0em;</code></li>
<li><code> text-decoration:underline;</code></li>
<li><code>}</code></li>
</ol>
<p>Als nächstes definiere ich das Aussehen des eigentlichen Adressbuches. Hier wird die allgemeine Schriftart, Hintergrundfarbe etc. angegeben. Zusätzlich mache ich Angaben über die Breite der Tabellen und ihre Tabellenköpfe. Als letztes lege ich noch das Aussehen der Überschrift meiner Anwendung fest.</p>
<ol class="Sourcecode">
<li><code>.RED_Buttons</code></li>
<li><code>{</code></li>
<li><code> margin:1em 0 0;</code></li>
<li><code> padding:0;</code></li>
<li><code>}</code></li>
<li><code>.RED_Buttons li</code></li>
<li><code>{</code></li>
<li><code> margin:0;</code></li>
<li><code> padding:0;</code></li>
<li><code> list-style-type:none;</code></li>
<li><code> display:inline;</code></li>
<li><code>}</code></li>
</ol>
<p>Nun zur Button-Liste, auch hier verwende ich nur rudimentäre Formatierung. Alle Buttons sollen nebeneinander und nicht untereinander stehen. Am einfachsten geht das mit dem <code>inline</code>-Wert der <code>display</code>-Eigenschaft.</p>
<ol class="Sourcecode">
<li><code>#btn_prev,</code></li>
<li><code>#btn_next,</code></li>
<li><code>#btn_edit,</code></li>
<li><code>#btn_add,</code></li>
<li><code>#btn_remove,</code></li>
<li><code>#btn_save,</code></li>
<li><code>#btn_cancel</code></li>
<li><code>{</code></li>
<li><code> cursor:pointer;</code></li>
<li><code> padding:.2em;</code></li>
<li><code> background-color:#c63;</code></li>
<li><code> color:#fff;</code></li>
<li><code> text-decoration:none;</code></li>
<li><code> border:thin outset;<br />
</code></li>
<li><code> font-weight:normal;</code></li>
<li><code>}</code></li>
<li><code>#btn_prev:hover,</code></li>
<li><code>#btn_next:hover,</code></li>
<li><code>#btn_edit:hover,</code></li>
<li><code>#btn_add:hover,</code></li>
<li><code>#btn_remove:hover,</code></li>
<li><code>#btn_save:hover,</code></li>
<li><code>#btn_cancel:hover</code></li>
<li><code>{</code></li>
<li><code> background-color:#804000;</code></li>
<li><code>}</code></li>
<li><code>#btn_prev:active,</code></li>
<li><code>#btn_next:active,</code></li>
<li><code>#btn_edit:active,</code></li>
<li><code>#btn_add:active,</code></li>
<li><code>#btn_remove:active,</code></li>
<li><code>#btn_save:active,</code></li>
<li><code>#btn_cancel:active</code></li>
<li><code>{</code></li>
<li><code> border:thin inset;</code></li>
<li><code>}</code></li>
</ol>
<p>Zum Schluss nach das Aussehen der eigentlichen Buttons. Da es ja offiziell Links sind, wird ihre Darstellung komplett geändert. Zusätzlich bekommen sie noch eine <code>hover</code>- und einen <code>active</code>-Effekt, um das Feeling einer Interaktion weiter zu unterstützen.</p>
<ol class="Sourcecode">
<li><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;</code></li>
<li><code>&lt;mitarbeiter&gt;</code></li>
<li><code> &lt;person id="1"&gt;</code></li>
<li><code> &lt;nachname&gt;Reinsdorf&lt;/nachname&gt;</code></li>
<li><code> &lt;vorname&gt;Enrico&lt;/vorname&gt;</code></li>
<li><code> &lt;email&gt;enrico@re-design.de&lt;/email&gt;</code></li>
<li><code> &lt;telefon&gt;0177 - 2822557&lt;/telefon&gt;</code></li>
<li><code> &lt;/person&gt;</code></li>
<li><code> &lt;person id="2"&gt;</code></li>
<li><code> &lt;nachname&gt;Doe&lt;/nachname&gt;</code></li>
<li><code> &lt;vorname&gt;John&lt;/vorname&gt;</code></li>
<li><code> &lt;email&gt;john@doe.com&lt;/email&gt;</code></li>
<li><code> &lt;telefon&gt;0123 - 1234567&lt;/telefon&gt;</code></li>
<li><code> &lt;/person&gt;</code></li>
<li><code> &lt;person id="3"&gt;</code></li>
<li><code> &lt;nachname&gt;Doe&lt;/nachname&gt;</code></li>
<li><code> &lt;vorname&gt;Jane&lt;/vorname&gt;</code></li>
<li><code> &lt;email&gt;jane@doe.de&lt;/email&gt;</code></li>
<li><code> &lt;telefon&gt;0123 - 1234567&lt;/telefon&gt;</code></li>
<li><code> &lt;/person&gt;</code></li>
<li><code>&lt;/mitarbeiter&gt; </code></li>
</ol>
<p>Als letztes möchte ich euch noch die <abbr title="Extensible Markup Language">XML</abbr>-Datei zeigen, die ich zur ersten Verarbeitung in der Anwendung benutzt habe. Späte wird diese komplett dynamisch von <abbr title="PHP: Hypertext Preprocessor">PHP</abbr> bzw. in ähnlicher Form von JavaScript, erzeugt. Und spielt in der finalen Version keine große Rolle mehr.</p>
<p>Zum Schluss noch die gerade besprochenen Dateien zum Download:</p>
<ul>
<li><a title="direkt zum Download" href="ftp://weblabor.re-design.de/AJAX-Adressbuch.zip">Download</a></li>
</ul>
<h3  class="related_post_title">Ähnliche Beiträge</h3><ul class="related_post"><li><a href="http://www.re-design.de/2007/12/23/ajax-abressbuch-tutorial-teil-3/" title="AJAX Abressbuch &#8211; Tutorial Teil 3">AJAX Abressbuch &#8211; Tutorial Teil 3</a></li><li><a href="http://www.re-design.de/2007/12/22/ajax-adressbuch-tutorial-teil-2/" title="AJAX Adressbuch &#8211; Tutorial Teil 2">AJAX Adressbuch &#8211; Tutorial Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/19/slideshow-mit-einer-html-seite-teil-2/" title="Slideshow mit einer HTML-Seite Teil 2">Slideshow mit einer HTML-Seite Teil 2</a></li><li><a href="http://www.re-design.de/2007/12/18/slideshow-mit-einer-html-seite-teil-1/" title="Slideshow mit einer HTML-Seite Teil 1">Slideshow mit einer HTML-Seite Teil 1</a></li><li><a href="http://www.re-design.de/2008/02/11/css-import-macht-probleme/" title="CSS Import macht Probleme">CSS Import macht Probleme</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.re-design.de/2007/12/21/ajax-adressbuch-tutorial-teil-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

