memorizzazione dei dati Javascript [chiuso]

0

Ciao sono uno sviluppatore web principiante e sto cercando di costruire l'interfaccia di un semplice sito di e-commerce come un progetto personale. Il sito ha più pagine con checkbox. Quando qualcuno controlla un elemento, recupera il prezzo dell'elemento e lo memorizza in una variabile. Ma quando vado alla pagina successiva e clicco su nuovi prodotti di checkbox la variabile si ripristina automaticamente allo stato originale. Come posso salvare il valore di quella variabile in Javascript?

Questo è il codice che ho scritto usando sessionStorage ma non funziona ancora quando passo alla pagina successiva il valore è resettato.

Come posso scrivere questo codice in modo che non venga reimpostato su ogni cambio di pagina. Tutte le pagine del mio sito web utilizzano lo stesso script.

$(document).ready(function () {
    var total = 0;

    $('input.check').click(function () {
        if ($(this).attr('checked')) {
            var check = parseInt($(this).parent().children('span').text().substr(1, 3));
            total += check;
            sessionStorage.var_name = 0 + total;
            alert(sessionStorage.var_name);

        } else {
            var uncheck = parseInt($(this).parent().children('span').text().substr(1, 3));
            total -= uncheck;
        }
    })
})
    
posta Nistor Alexandru 02.06.2012 - 17:13
fonte

2 risposte

4

Hai tre opzioni di base.

  1. Invia i dati al server e salvali con la sessione HTTP dell'utente. Quindi quando carichi una pagina che ha bisogno dei dati, la estrai e la usi. Questo probabilmente non è l'ideale per il tuo caso, ma è ancora necessario per alcune cose. Questa è anche la soluzione più sicura in quanto è improbabile che un utente possa disattivare qualsiasi funzionalità del browser per impedirlo. Se il caricamento di una pagina intera è eccessivo, è possibile inviare tali dati con una richiesta asincrona (Ajax), ma ciò richiede che JavaScript sia abilitato. Anche se non penso che sia più un problema per i siti web generali.

  2. Salva i dati in un cookie. I cookie vengono inviati avanti e indietro con ogni richiesta e risposta HTTP. C'è un limite alla grandezza dei cookie, quindi se invii molti dati, potresti non volerlo fare. Se lo fai, ti consigliamo di assicurarti di eliminare i cookie quando hai finito con loro in modo da non far gonfiare le tue richieste e risposte.

  3. Sfrutta le API di archiviazione dati lato client nei vari browser. Non sono ancora in grado di accelerare il tutto, è stato standardizzato e / o implementato completamente da tutti i principali browser, ma l'ultima volta che ho controllato c'erano librerie che estrapolano i vari dettagli. So che jQuery fa questo, ma sono sicuro che ce ne sono altri.

risposta data 02.06.2012 - 17:48
fonte
1

Ho usato personalmente jStorage (www.jstorage.info) in un progetto client. L'API è semplice, cross-browser e utilizza l'archiviazione locale HTML5 ove disponibile. (Utilizza il comportamento userData nelle versioni decrepite di IE.) Con l'archiviazione locale, è possibile scollegare il PC senza alcuna perdita di dati, quindi conserverà sicuramente i dati tra i carichi di pagina.

Sintassi di esempio:

var subTotal = $.jStorage.get( CACHEsubTotal );
subTotal += currentlySelectedItem;
$.jStorage.set( CACHEsubTotal, subTotal );

AGGIORNAMENTO DICEMBRE 2017:

Oggi utilizzo localDataStorage , dove si può impostare / ottenere in modo trasparente uno dei seguenti "tipi": Array, Boolean, Date , Float, Integer, Null, Object o String.

[DISCLAIMER] Sono l'autore dell'utilità [/ DISCLAIMER]

Esempi:

localDataStorage.set( 'key1', 'Belgian' );
localDataStorage.set( 'key2', 1200.0047 );
localDataStorage.set( 'key3', true );
localDataStorage.set( 'key4', { 'RSK' : [1,'3',5,'7',9] } );
localDataStorage.set( 'key5', null );

localDataStorage.get( 'key1' );   -->   'Belgian'
localDataStorage.get( 'key2' );   -->   1200.0047
localDataStorage.get( 'key3' );   -->   true
localDataStorage.get( 'key4' );   -->   Object {RSK: Array(5)}
localDataStorage.get( 'key5' );   -->   null

Tutto il lavoro di conversione viene eseguito in background: basta impostare e ottenere.

    
risposta data 17.05.2013 - 18:41
fonte

Leggi altre domande sui tag