<?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>FaceitWeb.com &#187; ajax</title>
	<atom:link href="http://www.faceitweb.com/tag/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.faceitweb.com</link>
	<description>Recensioni e articoli sul mondo della programmazione</description>
	<lastBuildDate>Tue, 20 Jul 2010 12:34:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Creare applicazioni interattive con Ajax</title>
		<link>http://www.faceitweb.com/2009/06/creare-applicazioni-interattive-con-ajax/</link>
		<comments>http://www.faceitweb.com/2009/06/creare-applicazioni-interattive-con-ajax/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 09:51:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://www.faceitweb.com/?p=323</guid>
		<description><![CDATA[

Ajax è una tecnica di programmazione che consente lo sviluppo di RIA (Rich Internet Application).
Le RIA sono applicazioni web caratterizzate da grande interattività e velocità di esecuzione.
L’elaborazione dei dati avviene a livello client (browser) e le chiamate al server avvengono in “background” in modo asincrono (Ajax sta per Asynchronous JavaScript and XML).
Cosa significa in parole [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p><strong>Ajax</strong> è una tecnica di programmazione che consente lo sviluppo di <strong>RIA</strong> (Rich Internet Application).<br />
Le RIA sono applicazioni web caratterizzate da grande interattività e velocità di esecuzione.<br />
L’elaborazione dei dati avviene a livello client (browser) e le chiamate al server avvengono in “<strong>background</strong>” in modo asincrono (Ajax sta per Asynchronous JavaScript and XML).</p>
<p>Cosa significa in parole povere che lo <strong>scambio dati tra client e server</strong> avviene in background?</p>
<p>Vuol dire che lo scambio dati tra client e server permette l’aggiornamento dinamico della pagina web senza che quest’ultima venga ricaricata e senza dover richiamare una nuova pagina ma, soprattutto, è da sottolineare che non bisogna attendere che sia stata ultimata la richiesta per poterne effettuare altre.</p>
<p>Ajax non è un linguaggio di programmazione ma un insieme di tecnologie, vediamo quali sono:</p>
<ol>
<li>HTML/XHTML/CSS per il markup;</li>
<li><a title="collegamento esterno" href="http://it.wikipedia.org/wiki/Document_Object_Model" target="_blank">DOM</a> (Document Object Model) manipolato attraverso un linguaggio ECMAScript come JavaScript;</li>
<li><a title="collegamento esterno" href="http://it.wikipedia.org/wiki/XMLHttpRequest" target="_blank">XMLHttpRequest</a> per lo scambio asincrono dei dati tra client e server;</li>
<li><a title="collegamento esterno" href="http://it.wikipedia.org/wiki/XML" target="_blank">XML</a> come formato per lo scambio dati. Non è obbligatorio e al suo posto si può scegliere un altro formato come <a title="collegamento esterno" href="http://it.wikipedia.org/wiki/JSON" target="_blank">JSON</a> o anche semplice testo.</li>
</ol>
<p>Le applicazioni web che fanno uso di Ajax necessitano di <strong>browser di ultima generazione</strong> che supportino tale tecnologia.</p>
<p>Tutti i principali browser come <strong>FireFox</strong>, <strong>Internet Explorer</strong>, <strong>Google Chrome</strong>, <strong>Opera</strong> e <strong>Safari</strong> supportano Ajax ma è buona norma testare i propri applicativi per verificare la compatibilità.</p>
<p><span id="more-323"></span></p>
<p style="text-align: center;"><script type="text/javascript"><!--
google_ad_client = "pub-8488545646955443";
google_ad_slot = "1886844531";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</p>
<p>Abbiamo detto che le chiamate Ajax avvengono in background e, ottenuta la risposta, viene modificata solo una porzione della pagina (di solito un elemento HTML come il DIV).<br />
Questo potrebbe anche rappresentare un problema per l’utente che, una volta effettuata la chiamata, vede la pagina web “immobile” ignaro che la richiesta di informazioni è comunque stata inviata al server.</p>
<p>Per ovviare a questo problema è opportuno dedicare un elemento della pagina (un div è sicuramente indicato) alla descrizione dell’interazione. Questo si può realizzare con un semplice testo o con un <strong>loader</strong> (magari una GIF come quelle scaricabili da <a title="collegamento esterno" href="http://www.ajaxload.info/" target="_blank">ajaxload.info</a>) che “visivamente” mostra all’utente che è in corso uno scambio dati.</p>
<p>Vediamo tecnicamente come possiamo modificare dinamicamente il contenuto di una pagina web tramite il metodo <strong>innerHTML</strong> del <strong>DOM</strong>.</p>
<p>Supponiamo che nella nostra pagina web ci sia un <strong>div</strong> con <strong>ID</strong> univoco “<strong>content</strong>”:</p>
<pre>&lt;div id=”content”&gt;
<strong>Mio div</strong>
&lt;/div&gt;</pre>
<p>Possiamo modificare il contenuto del div utilizzando la seguente funzione:</p>
<pre><strong>function modifica() {</strong>
<strong>document.getElementById(“content”).innerHTML =
“Contenuto del div modificato”;</strong>
<strong>}</strong></pre>
<p>Richiamiamo la funzione tramite un button:</p>
<pre><strong>&lt;input type=”button”
value=”Modifica” onclick=”javascript:modifica()” /&gt;</strong></pre>
<p>Modificando dinamicamente lo stile del div possiamo inventarci una funzione che mostri o nasconda il suo contenuto:</p>
<pre><strong>function hideshow() { 

var element = document.getElementById("content");

if (element.style.visibility == 'hidden') {

element.style.visibility = 'visible';

element.style.display = 'block';

} else {

element.style.visibility = 'hidden';

element.style.display = 'none';

}

}
</strong></pre>
<p>Richiamiamo la funzione con un altro button:</p>
<pre><strong>&lt;input type="button" value="Hide/Show"
onclick="javascript:hideshow()" /&gt;</strong></pre>
<p>Adesso vediamo come realizzare una interazione “avanzata” inviando una richiesta ad una pagina <strong>server-side</strong> (nel nostro esempio scritta in PHP) ed ottenendo una risposta in formato testo.</p>
<p>Vediamo prima la pagina PHP (file.php):</p>
<pre><strong>&lt;?php</strong>

<strong>$utente = $_GET['utente'];</strong>

<strong>if ($utente=="rossi") echo "Salve sig. Rossi";</strong>

<strong>else echo "Non ti conosco";</strong>

<strong>?&gt;</strong></pre>
<p>La pagina riceve una variabile “<strong>utente</strong>” in modalità <strong>GET</strong> e controlla che il suo contenuto sia “<strong>rossi</strong>”. In caso affermativo stampa la frase “<strong>Salve sig. Rossi</strong>” altrimenti la frase “<strong>Non ti conosco</strong>”. La risposta verrà inserita nel div con ID univoco “content” tramite Ajax:</p>
<pre><strong>var ajax = initAjax();</strong>

<strong>if (ajax) {</strong>

<strong>ajax.open("get", "file.php?utente=" + utente, true);</strong>

<strong>ajax.setRequestHeader("connection", "close");</strong>

<strong>ajax.onreadystatechange = function() {</strong>

<strong>var response="";</strong>

<strong>if (ajax.readyState == 0) response =
"Inizializzazione in corso...";</strong> 

<strong>if (ajax.readyState == 1) response =
"content","Connessione avviata...";</strong>

<strong>if (ajax.readyState == 2) response =
"content","Invio dati in corso...";</strong> 

<strong>if (ajax.readyState == 3) response =
"content","Ricezione dati in corso...";</strong> 

<strong>if (ajax.readyState == 4 &amp;&amp; ajax.status==200) {</strong>

<strong>response = ajax.responseText;</strong>

<strong>}</strong> 

<strong>else response =
"Operazione fallita! Errore numero " + ajax.status;</strong>

<strong>document.getElementById("content").innerHTML = response;</strong>

<strong>}</strong> 

<strong>ajax.send(null);</strong>

<strong>}</strong> 

<strong>else alert('Ajax non supportato!');</strong>
<strong></strong></pre>
<p>Dopo aver inizializzato <strong>l’oggetto Ajax</strong> (potete visionare il codice completo nei files a corredo dell’articolo) che, tra l’altro, ci permette di verificare che Ajax sia supportato dal browser, abbiamo effettuato la chiamata asincrona inviando il contenuto della variabile <strong>utente</strong> e ricevendo una risposta che abbiamo scelto di memorizzare nella variabile <strong>response</strong>.</p>
<p>Tutto questo servendoci del metodo <strong>Open</strong> (il cui terzo parametro impostato su <strong>true</strong> specifica che la chiamata è asincrona) e successivamente del metodo <strong>Send</strong>.</p>
<p>Niente di troppo complicato ma soffermiamoci un attimo sulla funzione <a title="collegamento esterno" href="http://www.w3.org/TR/XMLHttpRequest/#onreadystatechange" target="_blank">onreadystatechange</a>.</p>
<p>Questa funzione si preoccupa di controllare lo stato dell’interazione restituendo un numero intero (<strong>readyState</strong>) che identifica in ogni istante lo stato della richiesta.</p>
<p>Nel caso avessimo voluto effettuare la richiesta in <strong>POST</strong> avremmo dovuto modificare lo script nei metodi Open e Send e specificare tramite <strong>headers</strong> i valori da inviare.</p>
<pre><strong>ajax.open
("post", "file2.php", true);</strong>

<strong>ajax.setRequestHeader
("content-type", "application/x-www-form-urlencoded");</strong>

<strong>ajax.send
("utente=" + utente);</strong></pre>
<p>Richiamando il file PHP file2.php:</p>
<pre><strong>&lt;?php</strong>

<strong>$utente = $_POST['utente'];</strong>

<strong>if ($utente=="rossi") echo "Salve sig. Rossi";</strong>

<strong>else echo "Non ti conosco";</strong>

<strong>?&gt;</strong>
</pre>
<p>Fonte: <a href="http://www.blographik.it/2009/02/11/come-creare-applicazioni-interattive-con-ajax/">Come creare applicazioni interattive con Ajax</a></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for Creare applicazioni interattive con Ajax" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+Creare+applicazioni+interattive+con+Ajax" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2009/06/creare-applicazioni-interattive-con-ajax/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JSON: JavaScript Object Notation</title>
		<link>http://www.faceitweb.com/2008/10/json-javascript-object-notation/</link>
		<comments>http://www.faceitweb.com/2008/10/json-javascript-object-notation/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 07:59:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[collezione]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[json javascipt java]]></category>
		<category><![CDATA[linguaggio]]></category>
		<category><![CDATA[myJSONtext]]></category>
		<category><![CDATA[myObject]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[scambio dati]]></category>
		<category><![CDATA[var]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.faceit.net23.net/?p=32</guid>
		<description><![CDATA[

JSON, è un formato di scambio dati che utilizza la notazione letterale fornita da JavaScript per rappresentare dati strutturati. È a tutti gli effetti un sottinsieme del linguaggio JavaScript. Esso permette l’uso di dati che vengono interpretati direttamente come oggetti JavaScript o come array.
A differenza di XML, JSON fa uso di primitive ben supportate dai [...]]]></description>
			<content:encoded><![CDATA[
<!-- ALL ADSENSE ADS DISABLED -->
<p>JSON, è un formato di scambio dati che utilizza la notazione letterale fornita da JavaScript per rappresentare dati strutturati. È a tutti gli effetti un sottinsieme del linguaggio JavaScript. Esso permette l’uso di dati che vengono interpretati direttamente come oggetti JavaScript o come array.<br />
A differenza di XML, JSON fa uso di primitive ben supportate dai browser più comuni che ne rendono estremamente efficiente la gestione.<br />
Tutto ciò risulta molto comodo in Ajax, dove lo spreco di banda ed il parsing delle response sono sempre cruciali.</p>
<p>Ovviamente JSON è completamente indipendente dal tipo di linguaggio di programmazione utilizzato. Inoltre è ampliamente supportato dalla maggior parte dei linguaggi di programmazione grazie alla disponibilità di numerose librerie.</p>
<p>I dati che si possono rappresentare in JSON sono di tipo:</p>
<p><em>object</em>: ovvero una collezione di coppie chiave:valore separate da virgola e racchiusi all’interno di parentesi graffe. (ad es. { “nome” : “pinco”, “cognome” : “pallino” } )</p>
<p><em>array</em>: sequenza ordinata di valori separati da virgola (ad esempio “email” : [ “pincopallino@pippo.it”, “pluto@pippo.it” ] )</p>
<p><em>value</em>: un singolo valore che può essere una stringa racchiusa tra virgolette, oppure un number, un object, un array o un boolean.</p>
<p>Vediamo ora un esempio di testo in formato JSON:</p>
<pre>{“person”: {
	“personalData”: {
		“firstName”: ”pinco”,
		“lastName” : ”pallino”,
		“email”    : ”pincopallino@pippo.it”,
		“phones”   : [ “123456789”, “123456789”, “7777777777”]
		“age”	     : 18
       }
}</pre>
<p>Abbiamo un oggetto root “person” e un oggetto nodo “personalData”. Quest’ultimo a sua volta contiene (come da definizione di oggetto JSON) delle coppie chiave:valore. Notiamo che la chiave “phones” in realtà è un array, quindi una sequenza di valori.</p>
<p><strong>JSON e JavaScript</strong></p>
<p>Ora supponiamo di aver ricevuto dal server il testo dell’esempio precedente e supponiamo di volerlo “parsare” tramite JavaScript. Per fare questo basterà semplicemente usare la funzione JavaScript eval() come segue:</p>
<p>var myObject = eval(’(’ + myJSONtext + ‘)’);</p>
<p>Se ad esempio volessimo recuperare il valore del campo “email” contenuto all’interno del testo basterà usare la sintassi myObject.person.personalData.email.<br />
Bisogna però stare attenti al fatto che eval() esegue qualsiasi codice JavaScript gli venga passato.Di conseguenza l’uso di questa funzione è indicato solamente quando sappiamo che la sorgente del messaggio è sicura. Inoltre non è detto che il messaggio JSON ricevuto sia valido.<br />
Per questo è meglio usare un <a href="http://www.json.org/json2.js">JSON parser</a> come segue:</p>
<p>var myObject = JSON.parse(myJSONtext, reviver);</p>
<p>dove il parametro opzionale reviver è una funzione che verrà eseguita per ogni coppia chiave:valore.<br />
Ogni valore sarà sostituito dal valore restituito dalla funzione reviver.<br />
Il JSON parser fornito da questa libreria accetta solo testi in formati JSON, quindi niente script maliziosi!</p>
<p>Date le sue caratteristiche è opportuno penare non resta che chiedersi quale formato di interscambio è preferibile usare nelle nostre applicazioni.<br />
Ovviamente tutto dipende dal contesto e dai requisiti dell’applicazione stessa e valutare poi, quanto un certo formato piuttosto che un altro sia supportato dal linguaggio di programmazione usato.</p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="fabio.cervino@poste.it" /><input type="hidden" name="return" value="Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com" /><input type="hidden" name="item_name" value="Offri un caffè allo staff for JSON: JavaScript Object Notation" /><input type="hidden" name="currency_code" value="EUR" /><input type="hidden" name="amount" value="" /><input type="image" src="http://www.faceitweb.com/wp-content/plugins/buy-me-beer/icon_cafe.gif" align="left" alt="Offrimi un caffè" title="Offrimi un caffè" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=fabio.cervino@poste.it&amp;currency_code=EUR&amp;amount=&amp;return=Grazie di cuore per aver voluto dare una mano allo staff di Faceitweb.com&amp;item_name=Offri+un+caffè+allo+staff+for+JSON:+JavaScript+Object+Notation" target="paypal"></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.faceitweb.com/2008/10/json-javascript-object-notation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- www.000webhost.com Analytics Code -->
<script type="text/javascript" src="http://analytics.hosting24.com/count.php"></script>
<noscript><a href="http://www.hosting24.com/"><img src="http://analytics.hosting24.com/count.php" alt="web hosting" /></a></noscript>
<!-- End Of Analytics Code -->
