<?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>Blogrammazione &#187; Javascript</title>
	<atom:link href="http://www.marcolecce.com/blog/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marcolecce.com/blog</link>
	<description>Programmazione, PHP, JAVA, ASP, Linux, Windows, Ajax, Web 2.0, Web 3.0</description>
	<lastBuildDate>Thu, 22 Jul 2010 13:06:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>ExtJs, inviare un array nelle chiamate Ajax</title>
		<link>http://www.marcolecce.com/blog/2010/05/19/extjs-inviare-un-array-in-ajax/</link>
		<comments>http://www.marcolecce.com/blog/2010/05/19/extjs-inviare-un-array-in-ajax/#comments</comments>
		<pubDate>Wed, 19 May 2010 15:48:37 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ext Js]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=259</guid>
		<description><![CDATA[Le chiamate asincrone sono ormai un fondamento delle interfacce web, e praticamente tutti i principali framework javascript in circolazione forniscono degli strumenti embedded che semplificano lo sviluppo e automatizzano la maggior parte delle impostazioni. ExtJs è un framework javascript che è riuscito ad ottenere forti consensi nell’ambito dello sviluppo di interfacce web: questo grazie soprattutto [...]]]></description>
			<content:encoded><![CDATA[<p>Le chiamate asincrone sono ormai un fondamento delle interfacce web, e praticamente tutti i principali framework javascript in circolazione forniscono degli strumenti embedded che semplificano lo sviluppo e automatizzano la maggior parte delle impostazioni.</p>
<p><a title="ExtJS" href="http://www.extjs.com/">ExtJs</a> è un framework javascript che è riuscito ad ottenere forti consensi nell’ambito dello sviluppo di interfacce web: questo grazie soprattutto alla potenza del prodotto e alla comunità decisamente attiva che fornisce un importante supporto agli sviluppatori.</p>
<p>Il meccanismo implementato da questo  framework per eseguire chiamate<a title="Ajax" href="http://it.wikipedia.org/wiki/AJAX" target="_blank"> Ajax</a> è estremamente semplice ed intuitivo, meccanismo che tra le altre cose ricorda molto da vicino quello adottato da altri framework javascript come <a title="JQuery" href="http://jquery.com/" target="_blank">JQuery</a>. Vediamone un esempio:</p>
<p style="text-align: left;">Ext.Ajax.request({<br />
[…]<br />
url: &#8216;pagina.php&#8217;,<br />
params: {id: ‘3’},<br />
success: function(resp) {<br />
[…]<br />
} ,<br />
failure: function(a, b) {<br />
[…]<br />
}<br />
});</p>
<p>Con queste poche righe di codice, <a title="ExtJS" href="http://www.extjs.com/">ExtJs</a> ci permette di eseguire una chiamata <a title="Ajax" href="http://it.wikipedia.org/wiki/AJAX">Ajax</a> verso l’indirizzo specificato nel parametro di configurazione “url” (pagina.php) e di gestire sia il caso di risposta positiva sia il caso di insuccesso.<br />
“params” invece permette di specificare i parametri che verranno inviati al file “pagina.php” durante la chiamata <a title="Ajax" href="http://it.wikipedia.org/wiki/AJAX">Ajax</a>: nel nostro esempio inviamo un parametro con identificativo “id” che contiene il valore 3.</p>
<p>E se volessimo inviare un array? Nessun problema, ci viene in aiuto <a title="JSON" href="http://it.wikipedia.org/wiki/JSON">JSON</a>.</p>
<p><a title="ExtJS" href="http://www.extjs.com/">ExtJs</a> è chiaramente progettato per fornire pieno supporto a <a title="JSON" href="http://it.wikipedia.org/wiki/JSON">JSON</a>, dunque possiamo sfruttare questo protocollo. Codifichiamo quindi il nostro array utilizzando le funzioni che ExtJs ci mette a disposizione, come ad esempio la seguente:</p>
<p>Ext.encode(array)</p>
<p>Supponendo quindi di voler inviare un array di valori con una chiamata <a title="Ajax" href="http://it.wikipedia.org/wiki/AJAX">Ajax</a> il nostro codice potrebbe diventare:<br />
Ext.Ajax.request({<br />
[…]<br />
url: &#8216;pagina.php&#8217;,<br />
<strong> params: {data: Ext.encode(arrayData)},</strong><br />
success: function(resp) {<br />
[…]<br />
} ,<br />
failure: function(a, b) {<br />
[…]<br />
}<br />
});</p>
<p>Lato server, sarà sufficiente eseguire il decoding del parametro “data”, che giunge al server sottoforma di stringa <a title="JSON" href="http://it.wikipedia.org/wiki/JSON">JSON</a>:</p>
<p>$myArray = json_decode($_POST[‘data’]);</p>

<div class="sociallist">
<span class="sociallist_tagline">
<strong>Vota Articolo:</strong><br/><!-- SocialList.org BEGIN -->
<script type="text/javascript">
sociallist_ae1d68f2_url = 'http://www.marcolecce.com/blog/2010/05/19/extjs-inviare-un-array-in-ajax/';
sociallist_ae1d68f2_title = 'ExtJs, inviare un array nelle chiamate Ajax';
sociallist_ae1d68f2_text = '';
sociallist_ae1d68f2_tags = 'AJAX,Ext Js,Javascript,PHP';
</script><script type="text/javascript" src="http://sociallist.org/widget.js?type=1&cols=3&rows=5&button_dx=160&button_dy=24&lang=it&uid=ae1d68f2"></script>
<noscript>
<a href="http://sociallist.org/submit.php?type=1&lang=it&url=http%3A%2F%2Fwww.marcolecce.com%2Fblog%2F2010%2F05%2F19%2Fextjs-inviare-un-array-in-ajax%2F&title=ExtJs%2C+inviare+un+array+nelle+chiamate+Ajax" target="_blank" title="Bookmark this Website"><img src="http://sociallist.org/buttons/it160x24.gif" border="0" width="160" height="24" alt="Bookmark" /></a>
</noscript>
<!-- SocialList.org END --></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2010/05/19/extjs-inviare-un-array-in-ajax/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Maps &#8211; Come inserire sul proprio sito le google maps con indirizzi dinamici</title>
		<link>http://www.marcolecce.com/blog/2009/04/18/google-maps-come-inserire-sul-proprio-sito-le-google-maps-con-indirizzi-dinamici/</link>
		<comments>http://www.marcolecce.com/blog/2009/04/18/google-maps-come-inserire-sul-proprio-sito-le-google-maps-con-indirizzi-dinamici/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 10:55:14 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Varie]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/?p=132</guid>
		<description><![CDATA[Gli strumenti forniti da Google sono sempre più utilizzati per integrare i portali web con servizi sempre più interessanti. Tra i più utilizzati e apprezzati dagli utenti, vi sono sicuramente le google map, ovvero le mappe che indicano l&#8217;esatta posizione di un indirizzo o di una locazione geografica. Oramai su quasi tutte le pagine &#8220;Contatti&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p id="line120">Gli strumenti forniti da <a href="http://www.google.it/" target="_blank">Google</a> sono sempre più utilizzati per integrare i portali web con servizi sempre più interessanti.<br />
Tra i più utilizzati e apprezzati dagli utenti, vi sono sicuramente le <a href="http://code.google.com/apis/maps/" target="_blank">google map</a>, ovvero le mappe che indicano l&#8217;esatta posizione di un indirizzo o di una locazione geografica.<br />
Oramai su quasi tutte le pagine &#8220;Contatti&#8221; sparse per il mondo è presente tale servizio: l&#8217;utilizzo  è molto semplice, e la documentazione ricca, anche se per specifiche personalizzazioni bisogna impegnarsi un poco ( giustamente <img src='http://www.marcolecce.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p>Ad esempio, potremmo avere la necessità di inserire nelle nostre pagine una mappa di google che, a<br />
seconda dell&#8217;indirizzo passato (e quindi dinamicamente), visualizzi la posizione desiderata con un &#8220;marker&#8221; e le informazioni relative.<br />
Lo script per implementare tale meccanismo è il seguente:</p>
<p><em>&lt;<span class="start-tag">script</span><span class="attribute-name"> type</span>=<span class="attribute-value">&#8220;text/javascript&#8221;</span>&gt;<br />
var map = null;<br />
var geocoder = null;</p>
<p>function load() {<br />
if (GBrowserIsCompatible()) {<br />
map = new GMap2(document.getElementById(&#8220;map&#8221;));<br />
var latitude = 45.05872;<br />
var longitude = 7.723114;<br />
var zoom = 13;<br />
var location = new GLatLng(latitude, longitude);<br />
//    var marker = new GMarker(location);<br />
//    map.addOverlay(marker);<br />
map.setCenter(location, zoom);<br />
geocoder = new GClientGeocoder();<br />
showAddress(address);<br />
}<br />
}</p>
<p>function showAddress(address) {<br />
if (geocoder) {<br />
geocoder.getLatLng(<br />
address,<br />
function(point) {<br />
if (!point) {<br />
$(&#8220;#nomap&#8221;).text(&#8216;indirizzo non disponibile&#8217;);<br />
} else {<br />
map.setCenter(point, 13);<br />
var marker = new GMarker(point);<br />
map.addOverlay(marker);<br />
//				              marker.openInfoWindowHtml(address);<br />
}<br />
}<br />
);<br />
}<br />
}</p>
<p>window.onload = load;<br />
window.onunload = GUnload;<br />
&lt;/<span class="end-tag">script</span>&gt;</p>
<p>&lt;<span class="start-tag">div</span><span class="attribute-name"> id</span>=<span class="attribute-value">&#8220;nomap&#8221; </span><span class="attribute-name">style</span>=<span class="attribute-value">&#8220;color: red;&#8221;</span>&gt;&lt;/<span class="end-tag">div</span>&gt;<br />
&lt;<span class="start-tag">div</span><span class="attribute-name"> id</span>=<span class="attribute-value">&#8220;map&#8221; </span><span class="attribute-name">style</span>=<span class="attribute-value">&#8220;width: 300px; height: 200px;&#8221;</span>&gt;&lt;/<span class="end-tag">div</span>&gt;</em></p>
<p>Il codice HTML delle ultime due righe crea due div: il primo serve per visualizzare un messaggio di<br />
warining nel caso in cui l&#8217;indirizzo passato non sia stato trovato dal motore di ricerca, il secondo serve per la visualizzazione della mappa.</p>
<p>Lo script è composto da due funzioni: load() e showAddress(address). La funzione load viene richiamata al caricamento della pagina, ed è ovviamente il cuore di questo script:  si occupa di settare tutti i paramentri necessari, tra cui il settaggio dell&#8217;id del div che conterrà la mappa (map).<br />
Eseguite tutte le assegnazioni del caso, viene infine richiamata la seconda funzione importante,<br />
showAddress(address).<br />
Questa ha un parametro, <em>address</em>, che potremmo ad esempio generare e passare con computazioni proveniente da pagine php, che è proprio l&#8217;indirizzo che verrà visualizzato sulla mappa attraverso l&#8217;uso dei marker settati nella prima funzione.<br />
L&#8217;indirizzo è un parametro, ed è quindi dinamico: ogni qualvolta la pagina verrà ricaricata, leggerà l&#8217;indirizzo attualmente impostato e lo passerà allo script, che si occuperà di visualizzarlo sulla mappa.</p>

<div class="sociallist">
<span class="sociallist_tagline">
<strong>Vota Articolo:</strong><br/><!-- SocialList.org BEGIN -->
<script type="text/javascript">
sociallist_bb6f7474_url = 'http://www.marcolecce.com/blog/2009/04/18/google-maps-come-inserire-sul-proprio-sito-le-google-maps-con-indirizzi-dinamici/';
sociallist_bb6f7474_title = 'Google Maps - Come inserire sul proprio sito le google maps con indirizzi dinamici';
sociallist_bb6f7474_text = '';
sociallist_bb6f7474_tags = '';
</script><script type="text/javascript" src="http://sociallist.org/widget.js?type=1&cols=3&rows=5&button_dx=160&button_dy=24&lang=it&uid=bb6f7474"></script>
<noscript>
<a href="http://sociallist.org/submit.php?type=1&lang=it&url=http%3A%2F%2Fwww.marcolecce.com%2Fblog%2F2009%2F04%2F18%2Fgoogle-maps-come-inserire-sul-proprio-sito-le-google-maps-con-indirizzi-dinamici%2F&title=Google+Maps+-+Come+inserire+sul+proprio+sito+le+google+maps+con+indirizzi+dinamici" target="_blank" title="Bookmark this Website"><img src="http://sociallist.org/buttons/it160x24.gif" border="0" width="160" height="24" alt="Bookmark" /></a>
</noscript>
<!-- SocialList.org END --></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2009/04/18/google-maps-come-inserire-sul-proprio-sito-le-google-maps-con-indirizzi-dinamici/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come effettuare il redirect di una pagina in Html, Javascritp, Php, Asp, Jsp, Coldfusion</title>
		<link>http://www.marcolecce.com/blog/2008/04/14/come-effettuare-il-redirect-di-una-pagina-in-html-javascritp-php-asp-jsp-coldfusion/</link>
		<comments>http://www.marcolecce.com/blog/2008/04/14/come-effettuare-il-redirect-di-una-pagina-in-html-javascritp-php-asp-jsp-coldfusion/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 08:08:41 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Varie]]></category>
		<category><![CDATA[coldfusion]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/2008/04/14/come-effettuare-il-redirect-di-una-pagina-in-html-javascritp-php-asp-jsp-coldfusion/</guid>
		<description><![CDATA[Il redirect permette di reindirizzare la pagine verso un&#8217;altra, senza interazione da parte dell&#8217;utente e inoltrando perciò le visite verso la nuova destinazione. Vi sono molti modi diversi di fare un redirect, noi vedremo i metodi per i principali linguaggi Web. Metodo HTML E&#8217; sufficiente creare una pagina con il seguente codice: &#60;HTML&#62; &#60;HEAD&#62; &#60;TITLE&#62;Html [...]]]></description>
			<content:encoded><![CDATA[<p>Il redirect permette di reindirizzare la pagine verso un&#8217;altra, senza interazione da parte dell&#8217;utente e inoltrando perciò le visite verso la nuova destinazione. Vi sono molti modi diversi di fare un redirect, noi vedremo i metodi per i principali linguaggi Web.</p>
<p><strong>Metodo HTML </strong></p>
<p>E&#8217; sufficiente creare una pagina con il seguente codice:</p>
<p><em>&lt;HTML&gt;<br />
&lt;HEAD&gt;<br />
&lt;TITLE&gt;Html Redirect&#8230;&lt;/TITLE&gt;<br />
&lt;META HTTP-EQUIV=&#8221;REFRESH&#8221; CONTENT=&#8221;4; URL=http://www.google.it&#8221;&gt;<br />
&lt;/HEAD&gt;<br />
&lt;BODY&gt;<br />
Stiamo effettuando un redirect..<br />
&lt;/BODY&gt;<br />
&lt;/HTML&gt; </em></p>
<p>La riga più importante di questo codice è la seguente:</p>
<p align="center"><em> &lt;META HTTP-EQUIV=&#8221;REFRESH&#8221; CONTENT=&#8221;4; URL=http://www.google.it&#8221;&gt;</em></p>
<p>con la quale sostanzialmente indichiamo che la pagina è appunto un redirect, che il redirect verrà effettuando entro 4 secondi e che la destinazione del redirect è la pagina <em>http://www.google.it</em> . Ovviamente se vogliamo che il redirect sia immediato è sufficiente inserire il valore 0 al posto del 4 . Fate attenzione a questo punto: i valori dallo 0 all&#8217;1 sono considerati dalla maggior parte dei motori di ricerca come permanent redirect ( codice html 301 ), mentre i valori maggiori di 2 sono considerati temporary redirect.</p>
<p><strong>Metodo Javascript</strong></p>
<p>Creiamo una pagina .html nella quale inseriamo il seguente codice:</p>
<p><em>&lt;HTML&gt;<br />
&lt;HEAD&gt;<br />
&lt;TITLE&gt;Redirect&#8230;&lt;/TITLE&gt;<br />
&lt;script language=&#8221;javascript&#8221;&gt;<br />
&lt;!&#8211;<br />
location.replace(&#8220;http://www.google.it&#8221;);<br />
&#8211;&gt;<br />
&lt;/script&gt;<br />
&lt;/HEAD&gt;<br />
&lt;BODY&gt;<br />
Redirect in corso&#8230;<br />
&lt;/BODY&gt;<br />
&lt;/HTML&gt;</em></p>
<p>In questo caso c&#8217;è poco da aggiungere: si crea un piccoloscript javascript nel quale appunto utilizziamo la direttiva <em>location.replace </em>per indicare la presenza di un redirect e dunque la nuova destinazione.</p>
<p><strong>Metodo Php</strong></p>
<p>Nella pagina php in cui vogliamo fare il redirect inseriamo il seguente codice:</p>
<p><em>&lt;?php<br />
header(&#8220;Location: http://www.google.it&#8221;);</em></p>
<p><em>/* se vogliamo usare il refresh&#8230; */</em></p>
<p><em>header(&#8220;Refresh: 0; URL=http://www.google.it&#8221;);<br />
?&gt;</em></p>
<p><strong>Metodo Asp</strong></p>
<p>In asp sostanzialmente il procedimento è molto simile al metodo php; ecco il codice da inserire nel nostro file asp su cui vogliamo effettuare il redirect:</p>
<p><em>&lt;%@ Language=VBScript %&gt;<br />
&lt;%<br />
Response.Status=&#8221;301 Moved Permanently&#8221;<br />
Response.AddHeader &#8220;Location&#8221;, &#8220;http://www.google.com&#8221;<br />
%&gt;</em></p>
<p><em>&lt;!&#8211; oppure //&#8211;&gt;</em></p>
<p><em>&lt;%<br />
Response.Buffer = true<br />
%&gt;<br />
&lt;html&gt;<br />
&lt;%<br />
Response.Redirect(&#8220;http://www.google.com&#8221;)<br />
%&gt;<br />
&lt;HEAD&gt;<br />
&lt;TITLE&gt;Redirect&#8230;&lt;/TITLE&gt;<br />
&lt;/HEAD&gt;<br />
&lt;BODY&gt;<br />
Redirect in corso&#8230;<br />
&lt;/BODY&gt;<br />
&lt;/HTML&gt; </em></p>
<p><strong>Metodo JSP</strong></p>
<p>Per la Java Server Page, il codice da utilizzare è il seguente:</p>
<p><em>&lt;%<br />
String redirectURL = &#8220;http://www.google.it/&#8221;;<br />
response.sendRedirect(redirectURL);<br />
%&gt; </em></p>
<p><strong>Metodo Coldfusion</strong></p>
<p>In Coldfusion è sufficiente utilizzare la seguente riga:</p>
<p><em>&lt;cflocation url=&#8221;http://www.google.it&#8221;&gt;</em></p>
<p>Anche se non è fondamentale, è comunque molto importante conoscere i principali codici di stato HTML : bisogna fare molta attenzione se non si vuole perdere traffico o posizioni sui motori di ricerca. Ecco i principali:</p>
<p align="left"><strong>      300 Multiple Choices</strong><br />
<strong>   </strong><br />
<strong>      301 Moved Permanently</strong><br />
<strong>   </strong><br />
<strong>      302 Found</strong><br />
<strong>   </strong><br />
<strong>      303 See Other</strong><br />
<strong>   </strong><br />
<strong>      304 Not Modified</strong><br />
<strong>   </strong><br />
<strong>      305 Use Proxy</strong><br />
<strong>   </strong><br />
<strong>      306 (Unused)</strong><br />
<strong>   </strong><br />
<strong>      307 Temporary Redirect</strong></p>
<ul><strong><br />
</strong></ul>
<p>Una spiegazione più approfondita su tali codici è possibile trovarla in questa <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html" target="_blank">pagina</a> , ovvero nelle pagine del World Wide web Consortium.</p>

<div class="sociallist">
<span class="sociallist_tagline">
<strong>Vota Articolo:</strong><br/><!-- SocialList.org BEGIN -->
<script type="text/javascript">
sociallist_2aabff87_url = 'http://www.marcolecce.com/blog/2008/04/14/come-effettuare-il-redirect-di-una-pagina-in-html-javascritp-php-asp-jsp-coldfusion/';
sociallist_2aabff87_title = 'Come effettuare il redirect di una pagina in Html, Javascritp, Php, Asp, Jsp, Coldfusion';
sociallist_2aabff87_text = '';
sociallist_2aabff87_tags = 'ASP,coldfusion,html,Java,Javascript,PHP,Web';
</script><script type="text/javascript" src="http://sociallist.org/widget.js?type=1&cols=3&rows=5&button_dx=160&button_dy=24&lang=it&uid=2aabff87"></script>
<noscript>
<a href="http://sociallist.org/submit.php?type=1&lang=it&url=http%3A%2F%2Fwww.marcolecce.com%2Fblog%2F2008%2F04%2F14%2Fcome-effettuare-il-redirect-di-una-pagina-in-html-javascritp-php-asp-jsp-coldfusion%2F&title=Come+effettuare+il+redirect+di+una+pagina+in+Html%2C+Javascritp%2C+Php%2C+Asp%2C+Jsp%2C+Coldfusion" target="_blank" title="Bookmark this Website"><img src="http://sociallist.org/buttons/it160x24.gif" border="0" width="160" height="24" alt="Bookmark" /></a>
</noscript>
<!-- SocialList.org END --></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2008/04/14/come-effettuare-il-redirect-di-una-pagina-in-html-javascritp-php-asp-jsp-coldfusion/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>JAVASCRIPT &#8211; Cambiare una classe di stile CSS dinamicamente</title>
		<link>http://www.marcolecce.com/blog/2008/02/20/javascript-cambiare-una-classe-di-stile-css-dinamicamente/</link>
		<comments>http://www.marcolecce.com/blog/2008/02/20/javascript-cambiare-una-classe-di-stile-css-dinamicamente/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 11:18:58 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Css]]></category>
		<category><![CDATA[menu tab]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/2008/02/20/javascript-cambiare-una-classe-di-stile-css-dinamicamente/</guid>
		<description><![CDATA[Assegnare una classe ad un elemento HTML è ovviamente una cosa molto semplice, ma spesse volte abbiamo bisogno di variare dinamicamente lo stile di un oggetto HTML, ad esempio a seguito di eventi come &#8220;onmouseover&#8221; o &#8220;onclick&#8221; . Supponiamo ad esempio di voler gestire l&#8217;apparizione di due div, creando una sorta di menu. L&#8217;esempio che [...]]]></description>
			<content:encoded><![CDATA[<p>Assegnare una classe ad un elemento HTML è ovviamente una cosa molto semplice, ma spesse volte abbiamo bisogno di variare dinamicamente lo stile di un oggetto HTML, ad esempio a seguito di eventi come &#8220;<em>onmouseover</em>&#8221; o  &#8220;<em>onclick</em>&#8221; .</p>
<p>Supponiamo ad esempio di voler gestire l&#8217;apparizione di due div, creando una sorta di menu. L&#8217;esempio che vogliamo realizzare è visibile <a href="http://www.marcolecce.com/blog/Esempi/esempio8/JavascriptCss.html" target="_blank">qui</a>.</p>
<p>Non soffermiamoci su come sono implementate le classi CSS: l&#8217;unica istruzione importante da tenere presente per le classi dei div che contenugono il testo è il valore di default  <em>display:none;</em> , che appunto di default permette di nacondere il contenuto dei div in questione.</p>
<p>La tecnica per realizzare un menu di questo tipo è in realtà molto semplice: quando con il cursore ci troviamo sopra uno dei due link di menu  ( &#8220;primo&#8221; o &#8220;secondo&#8221;, per interderci ), viene attivato l&#8217;evento javascript &#8220;<em>onmouseover</em>&#8220;, attraverso il quale richiamiamo la funzione &#8220;<em>openDiv</em>&#8220;.</p>
<p>Questa funzione non fa altro che settare alcune direttive in base al link menu in cui il cursore si trova: analizziamo il primo caso, il secondo è sostanzialmente uguale.</p>
<p>Nel primo caso, quando cioè il mouse si trova sul link menu &#8220;primo&#8221;, la funzione javascript &#8220;<em>openDiv</em>&#8221; setta i seguenti parametri:</p>
<p><em><strong>document.getElementById(id).className = &#8216;submenu_sfondo_S&#8217;;</strong><br />
document.getElementById(&#8216;submenu_01&#8242;).style.display = &#8216;inline&#8217;;<br />
document.getElementById(&#8216;secondo&#8217;).className = &#8216;submenu_S&#8217;;<br />
document.getElementById(&#8216;submenu_02&#8242;).style.display = &#8216;none&#8217;;    </em></p>
<p>La prima riga è la più importante, perchè è quella che di occupa di cambiare il valore dell&#8217;attributo <em>class</em> del div di riferimento, ovvero di cambiare la classe di stile per l&#8217;elemento (<em>id</em>) passato come parametro. La successiva riga non fa altro che impostare l&#8217;attributo <em>display</em> sul valore &#8216;<em>inline</em>&#8216; , in modo da visualizzare il contenuto del div corrispondente al link menu passato come parametro. Le ultime due righe compiono sostanzialmente i passi complementari sull&#8217;altro div (si imposta la classe css senza lo sfondo e si nasconde il div), in modo da creare l&#8217;effetto di alternanza.</p>
<p>Per chi avesse ancora dubbi, può rivedere il codice dell&#8217;esempio seguendo questo <a href="http://www.marcolecce.com/blog/Esempi/esempio8/JavascriptCss.txt" target="_blank">link</a>.</p>

<div class="sociallist">
<span class="sociallist_tagline">
<strong>Vota Articolo:</strong><br/><!-- SocialList.org BEGIN -->
<script type="text/javascript">
sociallist_5e151f4b_url = 'http://www.marcolecce.com/blog/2008/02/20/javascript-cambiare-una-classe-di-stile-css-dinamicamente/';
sociallist_5e151f4b_title = 'JAVASCRIPT - Cambiare una classe di stile CSS dinamicamente';
sociallist_5e151f4b_text = '';
sociallist_5e151f4b_tags = 'Css,Javascript,menu tab,Web';
</script><script type="text/javascript" src="http://sociallist.org/widget.js?type=1&cols=3&rows=5&button_dx=160&button_dy=24&lang=it&uid=5e151f4b"></script>
<noscript>
<a href="http://sociallist.org/submit.php?type=1&lang=it&url=http%3A%2F%2Fwww.marcolecce.com%2Fblog%2F2008%2F02%2F20%2Fjavascript-cambiare-una-classe-di-stile-css-dinamicamente%2F&title=JAVASCRIPT+-+Cambiare+una+classe+di+stile+CSS+dinamicamente" target="_blank" title="Bookmark this Website"><img src="http://sociallist.org/buttons/it160x24.gif" border="0" width="160" height="24" alt="Bookmark" /></a>
</noscript>
<!-- SocialList.org END --></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2008/02/20/javascript-cambiare-una-classe-di-stile-css-dinamicamente/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Javascript &#8211; Controllare e validare una mail con le espressioni regolari</title>
		<link>http://www.marcolecce.com/blog/2008/02/05/javascript-controllare-e-validare-una-mail-con-le-espressioni-regolari/</link>
		<comments>http://www.marcolecce.com/blog/2008/02/05/javascript-controllare-e-validare-una-mail-con-le-espressioni-regolari/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 08:58:44 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/2008/02/05/javascript-controllare-e-validare-una-mail-con-le-espressioni-regolari/</guid>
		<description><![CDATA[Vi sono vari modi per controllare i dati che riceviamo da un form html: se stiamo utilizzando PHP possiamo servirci di alcune funzioni messe a disposizione dal motore PHP ( come ad esempio empty() ), ma possiamo anche sceglire un&#8217;altra strada, Javascript. Il controllo di campi numeri e testuali è abbastanza banale, e in rete [...]]]></description>
			<content:encoded><![CDATA[<p>Vi sono vari modi per controllare i dati che riceviamo da un form html: se stiamo utilizzando PHP possiamo servirci di alcune funzioni messe a disposizione dal motore PHP ( come ad esempio <em>empty()</em> ), ma possiamo anche sceglire un&#8217;altra strada, Javascript.</p>
<p>Il controllo di campi numeri e testuali è abbastanza banale, e in rete di trovano migliaia di esempi: ciò che non si trova molto spesso è il controllo delle mail, e soprattutto il controllo da effettuare per verificare la validità di una mail.</p>
<p>Supponiamo di avere un form fatto in questo modo:</p>
<p><em> &lt;form name=&#8221;emailForm&#8221; method=&#8221;post&#8221; action=&#8221;"&gt;<br />
&lt;p&gt;Inserisci il tuo nome:&lt;br&gt;<br />
&lt;input name=&#8221;name&#8221; type=&#8221;text&#8221;&gt;<br />
&lt;br&gt;<br />
&lt;span&gt;Inserisci il tuo indirizzo e-mail:&lt;/span&gt;&lt;br&gt;<br />
&lt;input name=&#8221;email&#8221; type=&#8221;text&#8221;&gt;<br />
&lt;br&gt;<br />
</em></p>
<p><em>ecc.<br />
&lt;input name=&#8221;Submit&#8221; type=&#8221;submit&#8221;  value=&#8221;Invia&#8221; onclick=&#8221;return validateForm();&#8221;&gt;<br />
&lt;/form&gt;</em></p>
<p>Questo form ha diversi campi, a noi interessa il campo <em>email </em>e il campo <em>Submit</em> : quest&#8217;ultimo, una volta cliccato, chiama una funzione Javascript, <em>validateForm();</em> che si occupa appunto di validare il form. Come abbiamo detto precedentemente, concentriamoci sul controllo e sulla validazione della mail. Le righe di codice da inserire  nella funzione di cui sopra per raggiungere il notro obiettivo sono:</p>
<p>/*<br />
Se il valore del campo <em>email</em> del form <em>emailForm</em> è vuoto, salviamo nella variabile <em>errmsg</em>, oltre a possibili errori per controlli precedenti, un messaggio che specifichi la mancanza della mail<br />
*/<br />
if ( !document.emailForm.email.value ) {<br />
errmsg += &#8216;\nDovete immettere la MAIL&#8217;;</p>
<p>} else {</p>
<p>/*<br />
Se il campo <em>mail</em> è stato effettivamente completato, controlliamo però la validità di tale campo: per fare questo utilizziamo le espressioni regolari e alcune funzioni native di Javascript. Quindi creiamo un oggetto &#8220;espressione regolare&#8221; che salviamo nella varibile &#8220;<em>espressione</em>&#8220;, recuperiamo il valore della mail inviato tramite il form e lo salviamo nella variabile<em> stringa</em> ; infine facciamo il confronto tra questi due valori.<br />
Se stringa contiente un valore che non rispetta le regole imposte dall&#8217;espressione regolare, allora inseriamo un messaggio appropriato, altrimenti non si verificaheranno problemi e la computazione potra proseguire tranquillamente.<br />
*/<br />
var espressione = new RegExp(&#8220;^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+[\.]([a-z0-9-]+)*([a-z]{2,3})$&#8221;);<br />
var stringa = document.emailForm.email.value;<br />
if ( !espressione.test(stringa) )<br />
errmsg += &#8216;\nDovete immettere una MAIL VALIDA&#8217;;<br />
}</p>
<p>Le espressioni regolari vengono usate particolarmente per manipolare stringhe, e quindi in linguaggi come <a href="http://it.wikipedia.org/wiki/Perl" target="_blank">Perl</a>, che bene si adattano alla gestione e configurazioni di alcune caratteristiche particolari dei server.<br />
L&#8217;argomento delle espressioni regolari è molto vasto, e lo rimandiamo ad ulteriori chiarimenti futuri: per chi volesse iniziare ad approfondire questo affascinante studio può dare un&#8217;occhiata a questo indirizzo <a href="http://it.wikipedia.org/wiki/Espressione_regolare" target="_blank">qui</a>.</p>

<div class="sociallist">
<span class="sociallist_tagline">
<strong>Vota Articolo:</strong><br/><!-- SocialList.org BEGIN -->
<script type="text/javascript">
sociallist_1cd8cf9d_url = 'http://www.marcolecce.com/blog/2008/02/05/javascript-controllare-e-validare-una-mail-con-le-espressioni-regolari/';
sociallist_1cd8cf9d_title = 'Javascript - Controllare e validare una mail con le espressioni regolari';
sociallist_1cd8cf9d_text = '';
sociallist_1cd8cf9d_tags = '';
</script><script type="text/javascript" src="http://sociallist.org/widget.js?type=1&cols=3&rows=5&button_dx=160&button_dy=24&lang=it&uid=1cd8cf9d"></script>
<noscript>
<a href="http://sociallist.org/submit.php?type=1&lang=it&url=http%3A%2F%2Fwww.marcolecce.com%2Fblog%2F2008%2F02%2F05%2Fjavascript-controllare-e-validare-una-mail-con-le-espressioni-regolari%2F&title=Javascript+-+Controllare+e+validare+una+mail+con+le+espressioni+regolari" target="_blank" title="Bookmark this Website"><img src="http://sociallist.org/buttons/it160x24.gif" border="0" width="160" height="24" alt="Bookmark" /></a>
</noscript>
<!-- SocialList.org END --></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2008/02/05/javascript-controllare-e-validare-una-mail-con-le-espressioni-regolari/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>JAVASCRIPT &#8211; Contatore di caratteri per textarea</title>
		<link>http://www.marcolecce.com/blog/2008/01/26/javascript-contatore-di-caratteri-per-textarea/</link>
		<comments>http://www.marcolecce.com/blog/2008/01/26/javascript-contatore-di-caratteri-per-textarea/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 21:18:12 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/2008/01/26/javascript-contatore-di-caratteri-per-textarea/</guid>
		<description><![CDATA[Nell&#8217;utilizzare sistemi di commenti o post, a volte diventa necessario mettere un limite al numero di caratteri che è possibile inserire nella textarea dedicata, per evitare la copiatura di articoli o l&#8217;inserimento di commenti che diventano più lunghi dell&#8217;articolo stesso. Questo esempio è utilie a tale scopo: in pochi passi si configura un contatore javascript [...]]]></description>
			<content:encoded><![CDATA[<p>Nell&#8217;utilizzare sistemi di commenti o post, a volte diventa necessario mettere un limite al numero di caratteri che è possibile inserire nella textarea dedicata, per evitare la copiatura di articoli o l&#8217;inserimento di commenti che diventano più lunghi dell&#8217;articolo stesso.</p>
<p>Questo esempio è utilie a tale scopo: in pochi passi si configura un contatore javascript che blocca l&#8217;inserimento dei caratteri all&#8217;interno della textarea controllata una volta che viene superato il limite imposto. L&#8217;esempio è scaricabile <a href="http://www.marcolecce.com/blog/Esempi/esempio5/esempio5.zip">qui</a>.</p>
<p>In un file javascript .js salviamo il seguente codice:</p>
<pre>function getObject(obj) {
  var theObj;
  if(document.all) {
    if(typeof obj=="string") {
      return document.all(obj);
    } else {
      return obj.style;
    }
  }
  if(document.getElementById) {
    if(typeof obj=="string") {
      return document.getElementById(obj);
    } else {
      return obj.style;
    }
  }
  return null;
}

function Count(entrada,salida,texto,caracteres) {
  var entradaObj=getObject(entrada);
  var salidaObj=getObject(salida);
  var longitud=caracteres - entradaObj.value.length;
  if(longitud &lt;= 0) {
    longitud=0;
    texto='&lt;span class="disable"&gt; '+texto+' &lt;/span&gt;';
    entradaObj.value=entradaObj.value.substr(0,caracteres);
  }
  salidaObj.innerHTML = texto.replace("{CHAR}",longitud);
}</pre>
<p>A questo punto non ci resta che richiamare con il solito tag &#8216;&lt;script src&#8221;..&#8221;&gt;&lt;/string&gt;&#8217; il file javacript appena creata, ed infine configurare la texarea che vogliamo controllare:</p>
<pre id="line625">&lt;<span class="start-tag">textarea</span><span class="attribute-name"> id</span>=<span class="attribute-value">"text" </span><span class="attribute-name">name</span>=<span class="attribute-value">"text" </span><span class="attribute-value"></span><span class="attribute-name">
onkeyup</span>=<span class="attribute-value">"Count('text','counter','{CHAR} caratteri rimanenti',2000);"
</span><span class="attribute-name">maxlength</span>=<span class="attribute-value">"2000"</span>&gt;
&lt;/<span class="end-tag">textarea</span>&gt;&lt;<span class="start-tag">br</span><span class="error"><span class="attribute-name"> /</span></span>&gt;
&lt;<span class="start-tag">span</span><span class="attribute-name"> id</span>=<span class="attribute-value">"counter" </span><span class="attribute-name">class</span>=<span class="attribute-value">"minitext"</span>&gt;&lt;<span class="start-tag">i</span>&gt;2000 caratteri rimanenti&lt;/<span class="end-tag">i</span>&gt;&lt;/<span class="end-tag">span</span>&gt;</pre>
<p>Il valore &#8220;2000&#8243; è configurabile, e rappresenta il massimo numero di caratteri che è possibile inserire: lo &#8220;span&#8221; invece è dove verrà visualizzato il numero di caratteri rimanenti, calcolati a mano a mano che vengno inseriti.</p>

<div class="sociallist">
<span class="sociallist_tagline">
<strong>Vota Articolo:</strong><br/><!-- SocialList.org BEGIN -->
<script type="text/javascript">
sociallist_c13140d0_url = 'http://www.marcolecce.com/blog/2008/01/26/javascript-contatore-di-caratteri-per-textarea/';
sociallist_c13140d0_title = 'JAVASCRIPT - Contatore di caratteri per textarea';
sociallist_c13140d0_text = '';
sociallist_c13140d0_tags = '';
</script><script type="text/javascript" src="http://sociallist.org/widget.js?type=1&cols=3&rows=5&button_dx=160&button_dy=24&lang=it&uid=c13140d0"></script>
<noscript>
<a href="http://sociallist.org/submit.php?type=1&lang=it&url=http%3A%2F%2Fwww.marcolecce.com%2Fblog%2F2008%2F01%2F26%2Fjavascript-contatore-di-caratteri-per-textarea%2F&title=JAVASCRIPT+-+Contatore+di+caratteri+per+textarea" target="_blank" title="Bookmark this Website"><img src="http://sociallist.org/buttons/it160x24.gif" border="0" width="160" height="24" alt="Bookmark" /></a>
</noscript>
<!-- SocialList.org END --></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2008/01/26/javascript-contatore-di-caratteri-per-textarea/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>JQUERY &#8211; Grafica Stupenda ed Effetti Accattivanti per Gallery 3D di immagini</title>
		<link>http://www.marcolecce.com/blog/2008/01/25/jquery-grafica-stupenda-ed-effetti-accattivanti-per-gallery-3d-di-immagini/</link>
		<comments>http://www.marcolecce.com/blog/2008/01/25/jquery-grafica-stupenda-ed-effetti-accattivanti-per-gallery-3d-di-immagini/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 08:14:57 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/2008/01/25/jquery-grafica-stupenda-ed-effetti-accattivanti-per-gallery-3d-di-immagini/</guid>
		<description><![CDATA[Nel post di qualche giorno fa abbiamo introdotto JQuery con un esempio pratico, implementando un div a comparsa con un effetto davvero elegante e graficamente accattivante. L&#8217;esempio che vedremo in questo articolo è quello di una gallery di immagini da aggiungere sul vostro sito, una gallery però veramente accattivamente, con un incredibile effetto 3D per [...]]]></description>
			<content:encoded><![CDATA[<p>Nel <a href="http://www.marcolecce.com/blog/2008/01/04/jquery-effetti-grafici-spettacolari-per-i-vostri-siti-web/" target="_blank">post</a> di qualche giorno fa abbiamo introdotto <a href="http://jquery.com" target="_blank">JQuery</a> con un esempio pratico, implementando un div a comparsa con un effetto davvero elegante e graficamente accattivante.</p>
<p>L&#8217;esempio che vedremo in questo articolo è quello di una gallery di immagini da aggiungere sul vostro sito, una gallery però veramente accattivamente, con un incredibile effetto 3D per &#8220;sfogliare&#8221; le foto e l&#8217;effetto <a href="http://www.huddletogether.com/projects/lightbox/" target="_blank">lightbox</a> per l&#8217;ingrandimento dell&#8217;immagine. Una demo dell&#8217;esempio che andremo a completare è disponibile <a href="http://www.marcolecce.com/blog/Esempi/esempio4/prova.html" target="_blank">qui</a>.</p>
<p>L&#8217;esempio si basa sull&#8217;utilizzo del framework <a href="http://jquery.com" target="_blank">JQuery</a> in collaborazione con un plugin per <a href="http://jquery.com" target="_blank">JQuery</a> , il plugin Interface. Per lavorare,dunque, dobbiamo scaricare il framework e il plugin che potete trovare rispettivamente <a href="http://www.marcolecce.com/blog/Esempi/esempio1/jquery-1.2.1.js" target="_blank">qui</a> e <a href="http://www.marcolecce.com/blog/Esempi/esempio4/interface.js" target="_blank">qui</a>.</p>
<p>Una volta inclusi  i file .js scaricati, è sufficiente sostituire nel div &#8216;&lt;div id=&#8221;carousel&#8221;&gt;&#8217; le immagini che intendete includere nella vostra gallery. Nel caso in cui fossero molte, potreste pensare di fare un ciclio o un array, che sicuramente semplificato di parecchio la vita.</p>
<p>Potete scegliere se le immagini devono aprire un lik o l&#8217;ingradimento della stessa con un effetto davvero molto accattivante: nell&#8217;esempio, l&#8217;immagine di Alonso, quella che una volta caricata la pagina si trova nel centro, si apre con l&#8217;effetto <a href="http://www.huddletogether.com/projects/lightbox/" target="_blank">lightbox</a>, mentre le altre puntano a pagine dedicate ad alcune squadre di calcio del nostro quotidiano sportivo preferito, <a href="http://www.realsports.it" target="_blank">Realsports.it</a> .La differenza sta nel come impostiamo il link, vediamo un esempio:</p>
<p><em>1. &lt;a href=&#8221;link1.jpg&#8221; title=&#8221;Alonso&#8221; rel=&#8221;imagebox&#8221;&gt;&lt;img src=&#8221;link&#8221; width=&#8221;50%&#8221; /&gt;&lt;/a&gt;</em></p>
<p><em>2. &lt;a href=&#8221;link2.php&#8221; title=&#8221;Alonso&#8221;&gt;&lt;img src=&#8221;link&#8221; width=&#8221;50%&#8221; /&gt;&lt;/a&gt;</em></p>
<p>Il link al punto 1. è quello che utilizza l&#8217;effetto <a href="http://www.huddletogether.com/projects/lightbox/" target="_blank">lightbox</a> per aprire ed ingrandire l&#8217;mmagine, mentre nel punto 2. viene utilizzato il link ad una pagina, nel nostro esempio <em>link2.php .</em></p>
<p>L&#8217;ultimo passo che ci rimane da fare è inserire lo script che richiama le funzioni di gestione della gallery. Analizziamo lo script:</p>
<p><em>&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
window.onload =<br />
function()<br />
{<br />
$(&#8216;#carousel&#8217;).Carousel(<br />
{    </em></p>
<p><em> /*<br />
I comandi seguenti rappresentano le direttive che configurano la gallery: la larghezza, l&#8217;altezza, la larghezza delle      immagini che compaiono dietro alle altre per dare l&#8217;effetto 3D, l&#8217;elemento html utilizzato per riconoscere gli oggetti della gallery ( nel nostro caso  il tag &lt;a&gt; ) , il livello  di riflessione e di velocità di rotazione.<br />
*/<br />
itemWidth: 110,<br />
itemHeight: 62,<br />
itemMinWidth: 50,<br />
items: &#8216;a&#8217;,<br />
reflections: .5,<br />
rotationSpeed: 2.7<br />
}<br />
);<br />
$.ImageBox.init(<br />
{</em></p>
<p><em> /*<br />
Link all&#8217;immagine di Loading che verrà utilizzata durante il caricamento della foto ingrandita usando link del tipo 1. nell&#8217;esempio precedente<br />
*/<br />
loaderSRC: &#8216;images/imagebox/loading.gif&#8217;,</em></p>
<p><em>/*</em><em>Link all&#8217;immagine di Chiusura su cui cliccare per chiudere la foto ingrandita usando link del tipo 1. nell&#8217;esempio precedente<br />
</em><em>*/<br />
closeHTML: &#8216;&lt;img src=&#8221;http://www.realsports.it/resources/tRealSportsTemplate/arrow_realsports.gif&#8221; /&gt;&#8217;<br />
}<br />
);<br />
};<br />
&lt;/script&gt;</em><br />
A questo punto dovrebbe essere chiaro il funzionamento di questa gallery: aggiungiamo solo una precisazione. Per chi intesse personalizzare lo stile, può tranquillamente modificare a piacimento gli stili presenti nella pagine di esempio, l&#8217;importante è ovviamente non modificare gli identificati di classe (es. #ImageBoxCaption) .</p>

<div class="sociallist">
<span class="sociallist_tagline">
<strong>Vota Articolo:</strong><br/><!-- SocialList.org BEGIN -->
<script type="text/javascript">
sociallist_900d1d53_url = 'http://www.marcolecce.com/blog/2008/01/25/jquery-grafica-stupenda-ed-effetti-accattivanti-per-gallery-3d-di-immagini/';
sociallist_900d1d53_title = 'JQUERY - Grafica Stupenda ed Effetti Accattivanti per Gallery 3D di immagini';
sociallist_900d1d53_text = '';
sociallist_900d1d53_tags = '';
</script><script type="text/javascript" src="http://sociallist.org/widget.js?type=1&cols=3&rows=5&button_dx=160&button_dy=24&lang=it&uid=900d1d53"></script>
<noscript>
<a href="http://sociallist.org/submit.php?type=1&lang=it&url=http%3A%2F%2Fwww.marcolecce.com%2Fblog%2F2008%2F01%2F25%2Fjquery-grafica-stupenda-ed-effetti-accattivanti-per-gallery-3d-di-immagini%2F&title=JQUERY+-+Grafica+Stupenda+ed+Effetti+Accattivanti+per+Gallery+3D+di+immagini" target="_blank" title="Bookmark this Website"><img src="http://sociallist.org/buttons/it160x24.gif" border="0" width="160" height="24" alt="Bookmark" /></a>
</noscript>
<!-- SocialList.org END --></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2008/01/25/jquery-grafica-stupenda-ed-effetti-accattivanti-per-gallery-3d-di-immagini/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ajax &#8211; le basi di questa meravigliosa tecnica</title>
		<link>http://www.marcolecce.com/blog/2008/01/21/ajax-le-basi-di-questa-meravigliosa-tecnica/</link>
		<comments>http://www.marcolecce.com/blog/2008/01/21/ajax-le-basi-di-questa-meravigliosa-tecnica/#comments</comments>
		<pubDate>Mon, 21 Jan 2008 09:45:14 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/2008/01/21/ajax-le-basi-di-questa-meravigliosa-tecnica/</guid>
		<description><![CDATA[Ajax ( Asynchronous JavaScript and XML ) è una tecnica di sviluppo web che ha lo scopo di proporre interattivà senza tuttavia dover ricaricare la pagina ad ogni interazione con l&#8217;utente. In sostanza, Ajax permette attività in backgroud rispetto ad eventi principali: un esempio tipico di utilizzo di questa tecnica è l&#8217;aggiornamento dinamico di elenchi, [...]]]></description>
			<content:encoded><![CDATA[<p>Ajax <em>( <a href="it.wikipedia.org/wiki/AJAX" target="_blank"><font size="-1">Asynchronous JavaScript and XML</font></a> ) </em>è una tecnica di sviluppo web che ha lo scopo di proporre interattivà senza tuttavia dover ricaricare la pagina ad ogni interazione con l&#8217;utente. In sostanza, Ajax permette attività in backgroud rispetto ad eventi principali: un esempio tipico di utilizzo di questa tecnica è l&#8217;aggiornamento dinamico di elenchi, per esempio utilizzato ultimamente nei <a href="en.wikipedia.org/wiki/Social_network" target="_blank">social networks</a>. Mentre l&#8217;utente può scorrere le notizie e qundi interagire con la pagina, l&#8217;elenco delle news inserite si autoaggiorna senza tuttavia dover attedere che sia l&#8217;utente stesso ad effettuare l&#8217;aggiornamento della pagina.</p>
<p>Questa tecnica ha ormai aperto le porte a nuove tipologie di applicazioni, sempre più interattive e sempre più accattivanti. Ma come funziona Ajax? Ecco un esempio passo-passo di utilizzo di queste tecnologie: i commenti si possono leggere direttamente sul codice, in modo da facilitare la comprensione e velocizzare l&#8217;apprendimento. Supponiamo che questo codice sia contenuto in un file<br />
&#8220;<a href="http://www.marcolecce.com/blog/Esempi/esempio2/ajax.js" target="_blank">ajax1.js</a>&#8221; :</p>
<p>/*<br />
Questa è la funzione principale di creazione: si crea la variabile <em>obj</em> che conterrà il riferimento all&#8217;oggetto <em>XMLHttpRequest</em> l&#8217;oggetto principale su cui si agisce. Per garantire la compatibilità viene eseguito un controllo sul tipo di browser,  visto che  a seconda  della tipologia l&#8217;oggetto obj viene creato in modi diversi. Se il browser è &#8220;non &#8211; Internet Explorer&#8221;, allora si utilizza la funzione <em>XMLHttpRequest </em>altrimenti se il browser è Internet Explorer si utilizza <em>ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;)</em>. Questa differenza ha una base teorica, che non trattiamo in questa sede, occupandoci qui di &#8220;pura pratica&#8221;. Se volete approfondimenti scriveteci, e provvederemo  ad esaudire le vostre richieste! <img src='http://www.marcolecce.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  <em><br />
</em></p>
<p>*/<br />
<em>function createXHR() {<br />
var obj;<br />
if (window.XMLHttpRequest) {    // Non Internet Explorer<br />
obj = new XMLHttpRequest();<br />
} else if (window.ActiveXObject) { // Internet Explorer<br />
obj = new ActiveXObject(&#8220;Microsoft.XMLHTTP&#8221;);<br />
}<br />
return obj;<br />
}</em></p>
<p><em>obj=createXHR();</em></p>
<p>/*Questa è la funzione che gestisce e analizza lo stato dell&#8217;applicazione: si procede innanzittutto con dei controlli, che possiamo fare analizzando lo stato dell&#8217;oggetto obj precedentemente istanziato. Se durante il cambiamento si stato dell&#8217;oggetto obj non si sono verificati errori, allora le funzioni <em>readyState</em> e <em>status</em> ritorneranno rispettivamente i valori 4 e 200, valori che indicano appunto l&#8217;avvenuto caricamento con successo. A questo punto possiamo scrivere il codice che deve eseguire l&#8217;appilcazione per raggiungere il suo obiettivo. Nel nostro caso, una volta ricevuta la richiesta, la nostra piccola applicazione Ajax provvedrà a creare una select caricando il contenuto dinamicamente, cioè una select che cambia le opzioni in base ad una scelta fatta dall&#8217;utente ma senza il bisogno di ricaricare l&#8217;intera pagina.<br />
*/<em><br />
function onStateChange() {    // Cambiamento Stato<br />
if (obj.readyState == 4) { // Caricamento Avvenuto<br />
if (obj.status == 200) { // con successo</em></p>
<p><em>var div = document.getElementById(&#8216;risultato&#8217;);<br />
if ( document.uniqueID ) {<br />
var select = document.createElement(&#8220;&lt;select id=&#8217;district&#8217; name=&#8217;district&#8217; &gt;&lt;/select&gt;&#8221;);<br />
} else {<br />
var select = document.createElement(&#8220;select&#8221;);<br />
}<br />
select.setAttribute(&#8220;name&#8221;,&#8221;district&#8221;);<br />
select.setAttribute(&#8220;id&#8221;,&#8221;district&#8221;);<br />
select.setAttribute(&#8220;onchange&#8221;,&#8221;invia2();&#8221;);</em></p>
<p><em>list = new Array();<br />
list1 = new Array();<br />
list2 = new Array();</em></p>
<p>/*<strong>IMPORTANTE</strong>: tramite la proprietà <em>responseText </em>dell&#8217;oggetto<em> obj </em>è possibile recuperare valori prodotti dal file che si occupa di gestire la richiesta al server, per esempio il file che effettua una query e che nel nostro caso è <em>xmlHttpRequest.php</em>*/  <em><br />
string = obj.responseText;</em></p>
<p><em>list = string.split(&#8220;;&#8221;);<br />
list1 = list[0].split(&#8220;\n&#8221;);<br />
list2 = list[1].split(&#8220;\n&#8221;);</em></p>
<p><em>for ( i=0; i &lt; list1.length; i++ ) {<br />
op = new Option(list2[i], list1[i]);<br />
select.options[i] = op;<br />
}<br />
document.getElementById(&#8220;risultato&#8221;).innerHTML=&#8221;";<br />
div.appendChild(select);</em></p>
<p><em>} else {<br />
document.getElementById(&#8220;risultato&#8221;).innerHTML=&#8221;?&#8221;;<br />
alert(&#8220;Errore: &#8220;+obj.statusText);<br />
}<br />
}<br />
</em></p>
<p><em>}</em></p>
<p>/*La funzione <em>invia()</em> è quella da cui inizia l&#8217;attività: infatti questa funzione non fa altro che inviare alla funzione <em>inviaXHR()</em> il riferimento all&#8217;oggetto obj e il link del file di gestione<br />
*/<em><br />
function invia() {</em></p>
<p><em>inviaXHR(obj,&#8221;http://link_pagina/xmlHttpRequest.php&#8221;);<br />
}<br />
</em></p>
<p>/*Questo è il cuore dell&#8217;applicazione: attraverso una richiesta POST, inviamo con la funzione <em>send()</em> i dati al file <em>xmlHttpRequest.php</em>, che<em> </em>potrà svolgere il suo compito indipendentemente dalle altre interazioni che l&#8217;utente potrà avere con la pagina. Nel nostro caso, supponiamo che in questo file ci sia il codice per effettuare una query al database, e che con i risultati ottenuti si crei l&#8217;insieme delle opzioni che andranno a &#8220;riempire&#8221; la select di cui sopra. Supponiamo di aver creato una stringa in cui ogni attributo value dell&#8217;opzione è separato dal valore visibile dal carattere &#8220;|&#8221;, cioè:</p>
<p align="center"> value|Valore visibile  -&gt;&gt;&gt;  &lt;option value=&#8217;value&#8217;&gt;Valore visibile&lt;/option&gt;</p>
<p> */<em><br />
function inviaXHR(obj,url) {<br />
try {<br />
</em><em>// Preparazione comunicazione</em><br />
<em>        obj.open(&#8220;POST&#8221;, url, true);</em></p>
<p><em>        // caricamento in corso&#8230;fornisce il feedback all&#8217;utente</em><br />
<em>        document.getElementById(&#8220;risultato&#8221;).innerHTML=&#8221;caricamento in corso&#8230;&#8221;;<br />
obj.setRequestHeader(&#8216;Content-Type&#8217;, &#8216;application/x-www-form-urlencoded&#8217;);</em></p>
<p><em>//richiamiamo la funzione </em><em>onStateChange analizzata precedentemente<br />
</em><em>       obj.onreadystatechange = onStateChange;</em></p>
<p><em>/*<strong>IMPORTANTE</strong>: a seconda del valore country possiamo gestire la select<br />
che vogliamo creare, e quindi possiamo aggiornarla in base a determinati valori che vengono assegnati a country<br />
*/<br />
country=escape(document.myform.country.value);</em></p>
<p><em>//Inviamo al file di gestione .php alcuni parametri, attraverso il metodo POST<br />
obj.send(&#8220;country=&#8221;+country);    // Trasferimento</em></p>
<p><em>} catch (e) {</em></p>
<p><em>/*<br />
</em>Se si verificano problemi, l&#8217;elemento HTML che doveva diventare una select verrà sostituiro con un ?, che indica appunto il verificarsi di errori o problemi<em><br />
*/<br />
document.getElementById(&#8220;risultato&#8221;).innerHTML=&#8221;?&#8221;;<br />
alert(&#8220;Errore: &#8220;+e);<br />
}</em></p>
<p><em>}</em></p>
<p>Per chi avesse le idee ancora confuse, <strong>riassumiamo</strong> brevemente ciò che succede.</p>
<ol>
<li>Creaimo l&#8217;oggetto obj.</li>
<li>Supponiamo di cliccare su un pulsante che richiama la funzione javascript &#8220;invia()&#8221;; attiviamo così una richiesta al server.</li>
<li>Tramite la funzione <em>inviaXHR </em>gestiamo effettivamente la richiesta:  il metodo utiliaazto è il POST (con cui possiamo inviare dati al file di gestione) e il file di gestione è <em>xmlHttpRequest.php</em>, che nel nostro caso è scritto in PHP ma che potrebbe essere scritto in un qualsiasi linguaggio di programmazione. La funzione <em>send()</em> ci permette di inviare parametri al file di gestione, parametri che vengono inviati attraverso il metodo POST, appunto.</li>
<li>Il file di gestione può fare qualsiasi cosa per svolgere il suo compito: supponiamo nel nostro caso che il file effettui una query al database e restituisca una stringa.</li>
<li>Viene richiamata la gestione di stato dell&#8217;oggetto, <em>onStateChange</em>, che analizza l&#8217;andamento della richiesta che abbiamo effettuato. Se tutto è andato bene, recuperiamo attraverso la proprietà <em>responseText</em> dell&#8217;oggetto obj la stringa prodotta dal file di gestione. Possiamo lavorare sulla stringa restituita, creando ad esempio una select con delle option che dipendono dal valore di un parametro scelto dall&#8217;utente, nel nostro caso <em>country</em>.</li>
</ol>
<p>Tutto questo lavoro viene svolto in background, senza che l&#8217;utente di accorga di nulla, ma soprattutto permettendo all&#8217;utente di continuare ad interagire con la pagina liberamente e come se nulla stia accadendo.</p>

<div class="sociallist">
<span class="sociallist_tagline">
<strong>Vota Articolo:</strong><br/><!-- SocialList.org BEGIN -->
<script type="text/javascript">
sociallist_b8244d01_url = 'http://www.marcolecce.com/blog/2008/01/21/ajax-le-basi-di-questa-meravigliosa-tecnica/';
sociallist_b8244d01_title = 'Ajax - le basi di questa meravigliosa tecnica';
sociallist_b8244d01_text = '';
sociallist_b8244d01_tags = '';
</script><script type="text/javascript" src="http://sociallist.org/widget.js?type=1&cols=3&rows=5&button_dx=160&button_dy=24&lang=it&uid=b8244d01"></script>
<noscript>
<a href="http://sociallist.org/submit.php?type=1&lang=it&url=http%3A%2F%2Fwww.marcolecce.com%2Fblog%2F2008%2F01%2F21%2Fajax-le-basi-di-questa-meravigliosa-tecnica%2F&title=Ajax+-+le+basi+di+questa+meravigliosa+tecnica" target="_blank" title="Bookmark this Website"><img src="http://sociallist.org/buttons/it160x24.gif" border="0" width="160" height="24" alt="Bookmark" /></a>
</noscript>
<!-- SocialList.org END --></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2008/01/21/ajax-le-basi-di-questa-meravigliosa-tecnica/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>JQuery &#8211; Effetti grafici spettacolari per i vostri siti web</title>
		<link>http://www.marcolecce.com/blog/2008/01/04/jquery-effetti-grafici-spettacolari-per-i-vostri-siti-web/</link>
		<comments>http://www.marcolecce.com/blog/2008/01/04/jquery-effetti-grafici-spettacolari-per-i-vostri-siti-web/#comments</comments>
		<pubDate>Fri, 04 Jan 2008 06:49:44 +0000</pubDate>
		<dc:creator>marco</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.marcolecce.com/blog/2008/01/10/jquery-effetti-grafici-spettacolari-per-i-vostri-siti-web/</guid>
		<description><![CDATA[Questo articolo spiega come sia possibile utilizzare file javascript di grandi dimensioni senza tuttavia appesantire il caricamento del proprio sito web. Quando si lavora framework di ultima generazione, è assolutamente necessario adottare un sistema per accellerare il caricamento dei file .js . Ma qui ci occupiano di tutt&#8217;altro: nonostante le innumerevoli risorse disponibili, non è [...]]]></description>
			<content:encoded><![CDATA[<p>Questo <a href="http://www.marcolecce.com/Javascript/Javascript-Velocizzare-il-caricamento-degli-script.html">articolo</a> spiega come sia possibile utilizzare file javascript di grandi dimensioni senza tuttavia appesantire il caricamento del proprio sito web. Quando si lavora framework di ultima generazione, è assolutamente necessario adottare un sistema per accellerare il caricamento dei file .js .</p>
<p>Ma qui ci occupiano di tutt&#8217;altro: nonostante le innumerevoli risorse disponibili, non è facile trovare una guida che spieghi in modo chiaro e utile come in effetti sia possibile utilizzare uno tra i framework javascript più potenti in circolazione, <a href="http://jquery.com/">JQuery</a>.</p>
<p>Per questo motivo, andremo a scrivere il codice per creare qualche simpatico effetto: imparerete così le basi dell&#8217;utilizzo del framework, e non vi rimarrà che studiare in dettaglio la documentazione per approfondire le vostre conoscenze.</p>
<p>Eseguiti i passi come indicato nell&#8217;articolo a questo indirizzo <a href="http://www.marcolecce.com/Javascript/Javascript-Velocizzare-il-caricamento-degli-script.html">qui</a>, abbiamo a disposizione il framework per iniziare il nostro lavoro&#8230;vediamo qualche esempio!</p>
<p><u><strong>Esempio 1</strong></u></p>
<p>Visto che qualsiasi cosa noi facciamo con <a href="http://jquery.com/">JQuery</a> manipola o &#8220;legge&#8221; il DOM (Document Object Model), dobbiamo assicurarci che tutto ciò che intendiamo svolgere (comandare eventi con il click del mouse, ad esempio) sia &#8220;letto&#8221; non appena è letto il DOM. Per questo motivo, la prima funzione che vedremo sarà:</p>
<p><em>$(document).ready(function() {<br />
// azioni da svolgere quando il DOM è pronto<br />
});<br />
</em><br />
Questa è la funzione principale per <a href="http://jquery.com/">JQuery</a>, quella che solitamente non mancherà mai nei vostri script. Ma vediamo il nostro primo effetto, un div che compare e scompare cliccando su un link:</p>
<p><em>$(document).ready(function() {<br />
$(&#8216;a#link-toggle&#8217;).click(function(){$(&#8216;#div-box&#8217;).toggle(400);<br />
return false;});<br />
});</em></p>
<p>Potremmo spiegare questa funzione a parole in questo modo:</p>
<p>- Quando si clicca [ <em>click(function(){... </em>] sul link identificato dall&#8217;id &#8220;<em>link-toggle</em>&#8221; [<em> $('a#link-toggle')</em> ] si richiama la funzione &#8220;<em>toggle(400);</em>&#8221; sul div identificato dall&#8217;id &#8220;<em>div-box</em>&#8221; [<em> $('#div-box') </em>]. Fatto questo ritorna&#8221;false&#8221;;</p>
<p>A questo punto, possiamo creare la nostra pagina html, in cui richiamiamo lo script e inseriamo gli elementi che ci servono, ovvero il link e il div:</p>
<p>&lt;a id=&#8221;link-toggle&#8221; href=&#8221;#&#8221;&gt;Clicca qui&lt;/a&gt;<br />
&lt;div id=&#8221;div-box&#8221;&gt;Qui ci vuole un testo abbastanza lungo&lt;/div&gt;</p>
<p>A questo punto,  se tutto è stato fatto correttamente, sarà possibile cliccare sul link che abbiamo creato e&#8230;..avete visto che effetto?? E abbiamo scritto solo 3-4 righe di codice!! Provate ora ad immaginare cosa è possibile fare con <a href="http://jquery.com/">JQuery</a>&#8230;</p>
<p>Per chi avesse dubbi, segue il codice della pagina come dovrebbe risultare a conclusione lavori:</p>
<p>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;JQuery &#8211; Div scorrevole&lt;/title&gt;<br />
&lt;script src=&#8221;jquery-1.2.1.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script&gt;<br />
$(document).ready(function() {<br />
$(&#8216;a#link-toggle&#8217;).click(function(){$(&#8216;#div-box&#8217;).toggle(400);<br />
return false;});<br />
});<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;a id=&#8221;link-toggle&#8221; href=&#8221;#&#8221;&gt;Clicca qui&lt;/a&gt;<br />
&lt;div id=&#8221;div-box&#8221;&gt;<br />
Qui ci vuole un testo abbastanza lungo<br />
Qui ci vuole un testo abbastanza lungo<br />
Qui ci vuole un testo abbastanza lungo<br />
Qui ci vuole un testo abbastanza lungo<br />
Qui ci vuole un testo abbastanza lungo<br />
Qui ci vuole un testo abbastanza lungo<br />
Qui ci vuole un testo abbastanza lungo<br />
Qui ci vuole un testo abbastanza lungo<br />
Qui ci vuole un testo abbastanza lungo<br />
Qui ci vuole un testo abbastanza lungo<br />
Qui ci vuole un testo abbastanza lungo<br />
Qui ci vuole un testo abbastanza lungo<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p><em>Esempio funzionante disponibile al seguente <a href="http://www.marcolecce.com/blog/Esempi/esempio1/esempio1.html">indirizzo<br />
</a></em><em>Esempio scaricabile al seguente <a href="http://www.marcolecce.com/blog/Esempi/esempio1/esempio1.zip">indirizzo</a></em><a href="http://www.marcolecce.com/blog/Esempi/esempio1/esempio1.html" target="_blank"><br />
</a></p>
<p>Non vi resta che salvare questo codice in un file html, scaricare <a href="http://jquery.com/">JQuery</a> a questo <a href="http://code.google.com/p/jqueryjs/downloads/detail?name=jquery-1.2.1.js" target="_blank">indirizzo</a> e sistemare il file nella stessa cartella della pagina html&#8230;ed ecco a voi un div a comparsa con un gran effetto grafico!!</p>

<div class="sociallist">
<span class="sociallist_tagline">
<strong>Vota Articolo:</strong><br/><!-- SocialList.org BEGIN -->
<script type="text/javascript">
sociallist_6c421725_url = 'http://www.marcolecce.com/blog/2008/01/04/jquery-effetti-grafici-spettacolari-per-i-vostri-siti-web/';
sociallist_6c421725_title = 'JQuery - Effetti grafici spettacolari per i vostri siti web';
sociallist_6c421725_text = '';
sociallist_6c421725_tags = '';
</script><script type="text/javascript" src="http://sociallist.org/widget.js?type=1&cols=3&rows=5&button_dx=160&button_dy=24&lang=it&uid=6c421725"></script>
<noscript>
<a href="http://sociallist.org/submit.php?type=1&lang=it&url=http%3A%2F%2Fwww.marcolecce.com%2Fblog%2F2008%2F01%2F04%2Fjquery-effetti-grafici-spettacolari-per-i-vostri-siti-web%2F&title=JQuery+-+Effetti+grafici+spettacolari+per+i+vostri+siti+web" target="_blank" title="Bookmark this Website"><img src="http://sociallist.org/buttons/it160x24.gif" border="0" width="160" height="24" alt="Bookmark" /></a>
</noscript>
<!-- SocialList.org END --></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.marcolecce.com/blog/2008/01/04/jquery-effetti-grafici-spettacolari-per-i-vostri-siti-web/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
