Passaggio dei dati



Invece di spiegare come passare i dati, affrontiamo una situazione concreta.

Immaginiamo di avere un form con campi di tipo button e di voler indicare ad una finestra o alla pagina successiva quale tasto è stato premuto.

Inseriamo i tasti e poi dichiariamo nella sezione head una variabile globale Tasto:

<script type="text/javascript"><!--
  var tasto=null;
//--></script>

ad ogni tasto associamo l'evento:

onclick="tasto=valore"

dove valore sarà uguale a 1 nel primo tasto, uguale a 2 nel secondo e uguale a 3 nel terzo.

Immaginiamo due casi:

  1. di voler trasmettere i dati ad una finestra che viene aperta;
  2. di trasmettere i dati ad una pagina linkata.

Nel primo caso abbiamo solo un problema di trasferimento di dati perché la finestra madre, che contiene il valore da passare, conserva sempre questo valore finché non viene chiusa per cui basta inserire una riga di codice del tipo:

window.opener.tasto

per indicare: "prendimi il valore della variabile tasto contenuto nella finestra che ha aperto la finestra secondaria".

Clicca su uno dei tre tasti e poi clicca qui per verificare

Nel secondo caso, invece, possiamo utilizzare una finestra con dei frame (anche una finestra con un unico frame va bene) e conserviamo la variabile nella finestra top (quella che contiene i frame) e la richiamiamo dalle altre finestre con le proprietà parent.nomevariabile oppure top.nomevariabile.

I frame, però, sono spesso sconsigliati e restano scarsamente adoperati su siti di un certo livello dove la possibilità di trasferire dati è quella di utilizzare il cookie o l'URL.

In quest'ultimo caso passiamo il valore alla pagina successiva attraverso URL e scriviamo il seguente codice HTML ad un link:

<a href="prova25b.htm?tasto">

si noti come ci sia il valore indicato dopo il punto interrogativo. Questo tipo di codifica è quella utilizzata dal Perl e da altri linguaggi che operano sul server, ma qui può essere adattata ad HTML (resta solo un'annotazione in quanto questo passaggio non sembra funzionare con IE4).

Il problema ritorna quando bisogna recuperare il valore nella pagina successiva poiché il browser legge l'URL come una sola stringa. In tal caso bisogna utilizzare le proprietà e i metodi dell'oggetto String. Poniamo la locazione in una variabile:

var ausilio = String(this.location);
var tasto = ausilio.charAt(ausilio.lastIndexOf("?")+1);

nella prima riga viene preso l'URL e trasformato in stringa (ricordate i tipi di variabili?), nella seconda si legge il carattere in posizione successiva a quella dell'ultimo punto interrogativo della stringa.

Premere uno qualsiasi dei tre tasti e cliccare qui (fare attenzione all'URL della pagina successiva)

Ultimi articoli JavaScript

PhantomJS, headless browser per test con Javascript

Il tool ideale per realizzare, da terminale, operazioni in remoto su...

Creare e leggere QR Code in JavaScript

Applicazioni 'QR Code enabled' per il Web e per il mobile,...

Jquery UI Map: web-mapping con Google Maps e jQuery

Un plugin di jQuery UI per intefacciare applicaizoni Web/mobile con...

Scrollorama e Scrolldeck, slideshow d'effetto con jQuery

Plugin jQuery per ottenere Slideshow con diversi effetti di scrolling

jCanvas, un primo semplice grafico

Alla scoperta della libreria jCanvas, per semplificare il disegno e...

Altri articoli

Guide JavaScript

Guida Node.js

Il framework che permette di per usare V8, l'interprete JavaScript...

Canvas, guida ai framework

Canvas, tra gli elementi di HTML5 è forse quello di maggior impatto....

Guida Javascript: tecniche avanzate

Una guida dal taglio pratico per approfondire la programmazione a...

Altre guide

Newsletter @JavaScript

Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso JQuery e Ajax per Webmaster

03 Luglio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti