<?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>Good2Know &#187; Guida AJAX in italiano</title>
	<atom:link href="http://www.good2know.it/category/guida-ajax-in-italiano/feed" rel="self" type="application/rss+xml" />
	<link>http://www.good2know.it</link>
	<description>Webmaster's blog</description>
	<lastBuildDate>Sun, 29 Jan 2012 15:21:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Guida AJAX in italiano</title>
		<link>http://www.good2know.it/guida-ajax-in-italiano/guida-ajax-in-italiano/ </link>
		<comments>http://www.good2know.it/guida-ajax-in-italiano/guida-ajax-in-italiano/ #comments</comments>
		<pubDate>Mon, 01 Jun 2009 06:15:54 +0000</pubDate>
		<dc:creator>Filippo Matteo Riggio</dc:creator>
				<category><![CDATA[Guida AJAX in italiano]]></category>
		<category><![CDATA[richieste asincrone al server]]></category>

		<guid isPermaLink="false">http://www.good2know.it/?p=987</guid>
		<description><![CDATA[
Scrivo questa breve guida per poter permettere a tutti gli sviluppatori di iniziare ad utilizzare AJAX partendo da zero.
Iniziamo!
Che cos&#8217;è AJAX?
Dalle definizioni che si trovano in giro, AJAX sembra una cosa complicatissima, in realtà non lo è.
L&#8217;acronimo AJAX sta per Asynchronous Javascript And XML,cioè richieste asincrone attraverso javascript e xml.
Comunque si può utilizzare ajax anche [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.good2know.it/wp-content/uploads/2009/06/ajax.jpg"><img class="alignnone size-full wp-image-992" title="ajax" src="http://www.good2know.it/wp-content/uploads/2009/06/ajax.jpg" alt="ajax" width="355" height="179" /></a></p>
<p>Scrivo questa breve guida per poter permettere a tutti gli sviluppatori di iniziare ad utilizzare AJAX partendo da zero.</p>
<p>Iniziamo!</p>
<p><span id="more-987"></span><strong>Che cos&#8217;è AJAX?</strong></p>
<p>Dalle definizioni che si trovano in giro, AJAX sembra una cosa complicatissima, in realtà non lo è.</p>
<p>L&#8217;acronimo <strong>AJAX </strong>sta per <strong>Asynchronous Javascript And XML</strong>,cioè richieste asincrone attraverso javascript e xml.</p>
<p>Comunque <strong>si può utilizzare ajax anche senza conoscere XML</strong> e senza utilizzarlo.</p>
<p><strong>AJAX sfrutta la capacità di Javascript di caricare parte di una pagina web senza dover ricaricare l&#8217;intera pagina e la capacità di Javascritp di fare richieste HTTP.</strong></p>
<p><strong>Vediamo come Javascript riesce ad aggiornare elementi della pagina.<br />
</strong></p>
<blockquote><p><strong>&lt;script&gt;<br />
function script() {<br />
var c = document.getElementById(&#8220;div1&#8243;);<br />
c.innerHTML = &#8220;Testo2&#8243;;<br />
}<br />
&lt;/script&gt;<br />
&lt;div id=&#8221;div1&#8243;&gt;<br />
Testo1<br />
&lt;/div&gt;<br />
&lt;input type=&#8221;button&#8221; value=&#8221;Cliccami&#8221; onClick=&#8221;script()&#8221; /&gt;</strong></p></blockquote>
<p>Abbiamo visto come con la funzione<strong> innerHTML</strong> possiamo <strong>generare del codice html partendo da zero</strong>.</p>
<p>Ora dobbiamo vedere le <strong>richieste HTTP</strong>.</p>
<p>Le <strong>richieste HTTP</strong> sono veri e propri <strong>accessi a pagine dinamiche in asp o php( oa ltri linguaggi naturalmente)</strong>, attraverso l&#8217;oggetto <strong>XMLHttpRequest()</strong>.</p>
<p>Potremmo anche eseguire query su database.</p>
<p>Vediamo come :</p>
<blockquote><p><strong>function CreateXmlHttpReq(handler) {<br />
var xmlhttp = null;<br />
xmlhttp = new XMLHttpRequest();<br />
xmlhttp.onreadystatechange = handler;<br />
return xmlhttp;<br />
}</strong></p></blockquote>
<p>La funzione <strong>CreateXmlHttpReq vuole come parametro una funzione,</strong> che si chiama <strong>handler</strong>.</p>
<p>Questo perchè <strong>Javascript utilizza come input/output gli eventi</strong>(onClick(),onChange(),ecc.).</p>
<p>Quando si verifica un evento Javascript entra in azione, chiamando la funzione handler, cioè la funzione che gestisce l&#8217;evento.</p>
<p>Le <strong>richieste HTTP richiedono tempo</strong>, quindi si può decidere di<strong> lanciare la funzione CreateXmlHttpReq in background</strong>.</p>
<p>Quindi <strong>creiamo anche la funzione myHandler() che gestirà gli stati della richiesta effettuata</strong>.</p>
<p>Facciamo un esempio completo,capirete meglio:</p>
<p>La parte Javascript</p>
<blockquote><p><strong>function CreateXmlHttpReq(handler) {<br />
var xmlhttp = null;<br />
xmlhttp = new XMLHttpRequest();<br />
xmlhttp.onreadystatechange = handler;<br />
return xmlhttp;<br />
}</strong></p>
<p><strong>function esempio1(){<br />
var myRequest = CreateXmlHttpReq(myHandler);<br />
myRequest.open(&#8220;GET&#8221;,&#8221;file1.php&#8221;,false);<br />
myRequest.send(null);<br />
}</strong></p>
<p><strong>function myHandler() {<br />
if (myRequest.readyState == 4 &amp;&amp; myRequest.status == 200) {<br />
alert(myRequest.responseText);<br />
}<br />
}</strong></p></blockquote>
<p>Ora la parte HTML</p>
<blockquote><p>&lt;input type=&#8221;button&#8221; value=&#8221;cliccami&#8221; onClick=&#8221;esempio1()&#8221;&gt;</p></blockquote>
<p>E per ultimo il file in php</p>
<blockquote><p>&lt;? echo &#8220;Ciao&#8221;; ?&gt;</p></blockquote>
<p>Analizziamo ora il codice.</p>
<p><strong>Alla pressione del bottone</strong>(input) viene generato <strong>l&#8217;evento onClick()</strong> che chiama la funzione <strong>esempio1</strong>.</p>
<p>La funzione esempio1 <strong>genera una richiesta con CreateXmlHttpReq</strong> a cui passa <strong>come parametro la funzione per gestire la richiesta</strong>, chiamata myHandler.</p>
<p>Poi attraverso il comando <strong>myRequest.open(&#8220;GET&#8221;,&#8221;file1.php&#8221;) apre il file in php</strong>, a cui può passare delle variabili con il get, anche se in realtà non ne passa.</p>
<p>La <strong>variabile booleana true o false serve per fare o meno richieste asincrone al server</strong>, cioè in un secondo momento, io lo messa <strong>a false perchè voglio il risultato immediatamente</strong>, ma ricordatevi che nel caso di <strong>molte chiamate al server sarà indispensabile utilizzare chiamate asincrone</strong>,<strong>magari regolate anche nel tempo</strong>.</p>
<p>Poi viene eseguito il <strong>comando myRequest. send(null)</strong>, perchè è un comando utilizzato <strong>solo nel caso di passare variabili con il metodo POST</strong>,vedremo successivamente come.</p>
<p><strong>La richiesta</strong> effettuata con l&#8217;oggetto XMLHttpRequest() <strong>genera degli stati</strong>,che sono:</p>
<p><strong>0 :  initializzata la richiesta</strong></p>
<p><strong>1:  caricamento della richiesta</strong></p>
<p><strong>2:  richiesta caricata</strong></p>
<p><strong>3:  richiesta interattiva</strong></p>
<p><strong>4:  richiesta completata</strong></p>
<p>Questi stati vengono controllati attraverso la funzione myHandler.</p>
<p>Se la richiesta è completata, quindi <strong>myRequest.readystate==4</strong> e la richiesta non genera errori, quindi <strong>myRequest.state==200</strong> (200 è il numero generato in caso non ci siano errori,404 pagina non trovata, e così via&#8230;), <strong>stampiamo un messaggio</strong>,con la funzione <strong>myRequest.responseText</strong>, che non è altro se non<strong> il risultato della richiesta</strong>.</p>
<p>Il <strong>risultato </strong>naturalmente protremo <strong>visualizzarlo </strong>attraverso la prima funzione di questa guida, cioè <strong>con il metodo innerHTML</strong>.</p>
<p>Abbiamo visto come è semplice fare una richiesta con il GET, basterà passare alla pagina la variabile che ci interessa così:</p>
<blockquote><p><strong>myRequest.open(&#8220;GET&#8221;,&#8221;file1.php?var=&#8221;+var1,false);</strong></p></blockquote>
<p>Purtroppo esiste anche Internet Explorer, che <strong>naturalmente ha problemi con AJAX</strong>,  in quanto fa <strong>il caching delle richieste</strong>, cioè <strong>mantiene in memoria tutte le richieste già effettuate</strong>.</p>
<p>Ma si può ovviare al problema, così:</p>
<blockquote><p><strong>var myRequest = null;</strong></p>
<p><strong>function CreateXmlHttpReq(handler) {<br />
var xmlhttp = null;<br />
try {<br />
xmlhttp = new XMLHttpRequest();<br />
} catch(e) {<br />
try {<br />
xmlhttp = new ActiveXObject(&#8220;Msxml2.XMLHTTP&#8221;);<br />
} catch(e) {<br />
xmlhttp = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);<br />
}<br />
}<br />
xmlhttp.onreadystatechange = handler;<br />
return xmlhttp;<br />
}</strong></p></blockquote>
<p>Questo per quanto riguarda la generazione della richiesta, e ora risolviamo <strong>il problema della memorizzazione delle richieste attraverso una bellissima funzione, il random</strong> <img src='http://www.good2know.it/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  !</p>
<p>Come? Così:</p>
<blockquote><p><strong>function esempio2() {<br />
var1= 10;<br />
var casuale = Math.random();<br />
myRequest = CreateXmlHttpReq(myHandler);<br />
myRequest.open(&#8220;GET&#8221;,&#8221;file2.php?var1=&#8221;+var1+&#8221;&amp;random=&#8221;+casuale,false);<br />
myRequest.send(null);<br />
}</strong></p></blockquote>
<p>Siamo quasi alla fine, ultime battute sul metodo POST.</p>
<p>Dovremmo sapere tutti che <strong>il GET rende le variabili visibili al client</strong>, cosa molto <strong>scomoda per quanto riguarda la sicurezza</strong>,ecco perchè entra in gioco il metodo <strong>POST</strong>.</p>
<p>Non dovremo far altro che <strong>inviare prima del metodo open gli header appositi attraverso la funzione setRequestHeader</strong>, così :</p>
<blockquote><p><strong>myRequest.open(&#8220;POST&#8221;, &#8220;file3.php&#8221;,false);<br />
myRequest.setRequestHeader(&#8220;content-type&#8221;, &#8220;application/x-www-form-urlencoded&#8221;);<br />
myRequest.send(&#8220;var1=10&#8243;);</strong></p></blockquote>
<p>Bene, adesso sapete come poter fare richieste a pagine lato server utilizzando Javascript.</p>
<p>Successivamente pubblicherò <strong>alcuni post per vedere più in dettaglio le varie particolarità di AJAX</strong>.</p>
<p>Alla prossima <img src='http://www.good2know.it/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.good2know.it/guida-ajax-in-italiano/guida-ajax-in-italiano/ /feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

