Capita spesso di aver bisogno di leggere il valore di un parametro presente in querystring, e spesso per un solo dannato parametro si sceglie di intervenire lato server con script PHP o servlet Java(o Action Struts) e JSP.
Molto spesso la cosa è scocciante perchè magari non ritengo che sia così importante da dedicargli uno script lato server.
Quindi, grazie all'oggetto JavaScript Location, che rappresenta la barra degli indirizzi di ogni browser, ho potuto risolvere il mio problema: una funzione che analizza la querystring e mi restituisce il valore del parametro cercato, simulando una GET HTTP lato sever.
La funzione è molto semplice e molto funzionale.
Immaginiamo di dover estrapolare i valori dei parametri di una URL così fatta:
http://applicazione.intranet?id=222&ctx=corp&next=fwd
Procedendo per step:
- il primo passo è quello di separare l'intera URL per poter avere l'indirizzo della risorsa richiesta e l'elenco dei parametri;
- Il secondo passo è quello di creare l'elenco dei parametri presenti in querystring, rappresentati ogniuno da una coppia chiave/valore separata da un uguale. ES: ctx=corp;
- ultimo passo è quello di separare il valore del parametro dal suo nome;
In pochi passaggi, grazie alle funzioni per il trattamento delle stringhe che JavaScript espone, saremo in grado di avere il nome di tutti i parametri passati in querystring con i rispettivi valori comodamente stockati in un array associativo.
Passo ora ad illustrare il codice della funzione JavaScript getParameter() per l'analisi della URL e la raccolta dei parametri contenuti in querystring.
Come al solito, il codice è abbondantemente commentato in tutti i suoi passaggi più caldi.
<script type="javascript">
<--
function getParameter(){
//Array Associativo che conterrà i parametri presenti
//in querystring
var allParams = new Array();
//Recupero la URL visualizzata
var url = unescape( String(this.location) );
//Restituisco NULL se non ci sono i parametri
if(url.indexOf('?') < 0)
return null;
//Recupero la lista dei parametri/valori
var paramList = url.split("?")[1];
//Recupero ogni coppia chiave/valore
var params = paramList.split("&");
//Scorro tutte le coppie chiave/valore
//e le separo
for(var i=0; i<params.length; i++){
var temp = params[i].split("=");
//Carico l'array con tutti i parametri trovati
allParams[temp[0]] = temp[1];
}
//Restituisco l'array dei parametri con i rispettivi valori
return allParams;
}
// ****** ESEMPIO DI UTILIZZO ***********/
//Carico i parametri
var params = getParameter();
//Leggo il parametro ctx
var paramCtx = params['ctx'];
-->
</section>
Come precedentemente annunciato, la funzione non è assolutamente complessa ed è illustrato anche il modo di utilizzo tramite un esempio.
Poichè nella funzione getParameter() sono stati utilizzati esclusivamente oggetti Javascript standard, essa è assolutamente utilizzabile su qualunque browser esistente.
Alla prossima,
MA
0 commenti:
Posta un commento
Non ti è chiaro qualcosa?
No problem, posta il tuo dubbio ;)
..... e ricordati di firmarlo!