2015-01-04 24 views
7

Ho due pagine - "pagina 1" e "pagina 2". Nella pagina 1 c'è una casella di testo con un valore di es. 100 e un pulsante alla fine.Passare la variabile attraverso JavaScript da una pagina html ad un'altra pagina

Premendo il pulsante Voglio javascript per salvare il valore della casella di testo in una variabile globale (?) E passare alla pagina 2. Con "window.onload" Voglio una seconda funzione Javascript per avvisare il valore salvato a Pagina 1.

Ecco il mio codice Javascript:

<script type="text/javascript"> 

var price; //declare outside the function = global variable ? 

function save_price(){ 

    alert("started_1"); //just for information 

    price = document.getElementById('the_id_of_the_textbox').value; 

    alert(price); //just for information   
} 

<script type="text/javascript"> 

function read_price(){ 

    alert("started_2"); 

    alert(price); 

} 

On "Pagina 1" Ho questa send-Button con:

<input class="button_send" id="button_send" type="submit" value="Submit_price" onclick="save_price();"/> 

Si parte il Funzione Javascript e redi mi riporta correttamente alla mia pagina2.

Ma con questo ont la seconda pagina:

window.onload=read_price(); 

ottengo sempre un valore "non definito" del prezzo variabile globale.

Ho letto molto su quelle variabili globali. Per esempio. a questa pagina: Problem with global variable.. Ma non riesco a farlo funzionare ...

Perché non funziona?

+0

Hai frainteso quali "variabili globali" sono in JavaScript nel browser. Sono ancora legati alla pagina in cui sono stati impostati, non esistono in altre pagine. Le variabili globali – CBroe

+0

sono globali alla pagina. Forse dai un'occhiata ai parametri dell'URL http://stackoverflow.com/questions/979975/how-to-get-the-value-from-url-parameter? – nha

+0

@CBroe (e nha) Grazie! Non sapevo che erano ancora legati alla pagina. Io credo che siano "veramente" globali (valido per tutte le pagine Web) – Kronwied

risposta

15

Senza leggere il codice ma solo lo scenario, risolverei utilizzando localStorage. Ecco un esempio, userò prompt() in breve.

nella pagina 1:

window.onload = function() { 
    var getInput = prompt("Hey type something here: "); 
    localStorage.setItem("storageName",getInput); 
} 

Su page2:

window.onload = alert(localStorage.getItem("storageName")); 

È inoltre possibile utilizzare i cookie, ma localStorage permette molto di più spazi, e non vengono inviati ai server quando si richiedono le pagine .

+1

Questa è una buona soluzione, ma non hai spiegato perché dovresti usare questo. L'OP non comprende le variabili globali in JS. – ColBeseder

+0

@potasmic Grazie. Una soluzione davvero grande e facile. :) Devo considerare (come ha detto LiamB) un po 'di sicurezza di base con questa soluzione? – Kronwied

+0

@ColBeseder, Krownied: localStorage è per dominio. Altri siti non possono accedere a localStorage a meno che tu non abbia incluso altri script da altre fonti (ad esempio, Google Analytics). sessionStorage scade quando si chiude la scheda. I cookie hanno una scadenza più breve di localStorage. Tuttavia, se i dati contengono informazioni sensibili, dovresti investire in uno schema di scambio back-end invece di archiviarli direttamente nel browser, che gli utenti possono visualizzare, modificare, ecc. (Proprio come i biscotti) – potasmic

4

L'opzione migliore qui è utilizzare la stringa di query per inviare il valore.

how to get query string value using javascript

  • Così Pagina 1 reindirizza al page2.html? SomeValue = ABC
  • Page 2 può quindi leggere la stringa di query e specificamente il tasto 'someValue'

Se questo è qualcosa di più che un esercizio di apprendimento che si potrebbe voler considerare le implicazioni di sicurezza di questo però.

Le variabili globali non ti aiuteranno in questo modo poiché una volta ricaricata la pagina vengono distrutte.

0

Avete alcune opzioni diverse:

  • è possibile utilizzare un router SPA come SammyJS, o Angularjs e ui-router, in modo che le pagine sono stateful.
  • usa sessionStorage per memorizzare il tuo stato.
  • memorizzare i valori sull'hash dell'URL.
+0

@ LiamB è un ottimo punto. I miei suggerimenti, così come i suoi, hanno un'implicazione di sicurezza in cui i valori possono essere modificati dall'utente al di fuori dell'applicazione: cambiando i parametri di querystring, i parametri hash, i dati localStorage o con altri mezzi. Dovresti sempre fare la convalida sul tuo servizio di back-end dei dati. – Martin

Problemi correlati