Javascript non dispone di una funzione nativa per recuperare i valori trasmessi mediante i form, tuttavia, con un pizzico di fantasia e buona volontà, è possibile provvedere autonomamente con funzioni create ad hoc.
In un vecchio articolo abbiamo già affrontato l'argomento al semplice scopo di dimostrare come fosse possibile recuperare dei determinati valori da una querystring. In realtà l'articolo citato offriva un esempio puramente didattico e dal difficile impiego pratico.
Di seguito, pertranto, ritengo possa essere piuttosto interessante descrivere una funzione universale per recuperare valori passati col metodo GET ad una semplice pagina HTML (quindi senza l'ausilio di linguaggi di scripting lato server). Per farlo avremo bisogno, prima di tutto, di includere nel codice sorgente della pagina una funzione specifica:
<script type="text/javascript">
function parseGetVars()
{
// creo una array
var args = new Array();
// individuo la query (cioè tutto quello che sta a destra del ?)
// per farlo uso il metodo substring della proprietà search
// dell'oggetto location
var query = window.location.search.substring(1);
// se c'è una querystring procedo alla sua analisi
if (query)
{
// divido la querystring in blocchi sulla base del carattere &
// (il carattere & è usato per concatenare i diversi parametri della URL)
var strList = query.split('&');
// faccio un ciclo per leggere i blocchi individuati nella querystring
for(str in strList)
{
// divido ogni blocco mediante il simbolo uguale
// (uguale è usato per l'assegnazione del valore)
var parts = strList[str].split('=');
// inserisco nella array args l'accoppiata nome = valore di ciascun
// parametro presente nella querystring
args[unescape(parts[0])] = unescape(parts[1]);
}
}
return args;
}</script>
La funzione qui sopra (ampiamente commentata) può essere utilizzata in questo modo:
<script type="text/javascript"> // Recupero i valori passati con GET // Per farlo creo una variabile cui assegno come valore // il risultato della funzione vista in precedenza var get = parseGetVars(); // estraggo dall'array contenente i valori della querystring // il valore del parametro "sito" var sito = get['sito']; // stampo a video document.write(sito); </script>Ora non ci resta che testare il nostro lavoro. Per farlo chiamiamo la nostra pagina HTML avendo cura di passare il parametro "sito" nella querystring.
http://www.sito.com/esempio.html?sito=mrwebmaaster&autore=maxbossiNel nostro caso l'output prodotto sarà:
mrwebmaster
| Corso AJAX Applicazioni Web 2.0 basate su AJAX con ASP, ASP.NET e PHP. A partire da 49 €. | |
| Corso CSS Web Design ed Accessibilità secondo il W3C con CSS ed XHTML. A partire da 29 €. | |
| Corso Javascript Guida completa allo scripting lato client. A partire da 39 €. |