2013-06-25 16 views
6

Chcę wysłać nazwę użytkownika i hasło ze strony login.html do index.html. Jak mogę to zrobić tak proste, jak to możliwe? A jak zakodować moje struny, aby były zakodowane w URL i UTF-8?Jak wysyłać zmienne z jednego pliku do drugiego w JavaScript?

Pozdrowienia

+0

Sprawdź [to] (http://stackoverflow.com/q/11581543/778118). Ponadto dostępnych jest wiele informacji na ten temat. Powinieneś dostać swoje google. – jahroy

+0

"_Pytania muszą wykazywać minimalne zrozumienie problemu, który jest rozwiązywany. Powiedz nam, co próbujesz zrobić, dlaczego to nie zadziałało i jak powinno działać." "Głosuj, aby zamknąć. – jahroy

+0

Oflagowany duplikat: * – Jack

Odpowiedz

16

Można użyć ciasteczka, window.name, wyślij dane przez adres URL jako zapytanie lub przez web storage.

W tym exaple Zamierzam zapisać dane z jednej strony i zapoznania go z innej strony przy użyciu localStorage - (specs) oraz następujące metody:

zaloguj się.html

function saveData(user, pass) { 
    var account = { 
    User: user, 
    Pass: pass 
    }; 
    //converts to JSON string the Object 
    account = JSON.stringify(account); 
    //creates a base-64 encoded ASCII string 
    account = btoa(account); 
    //save the encoded accout to web storage 
    localStorage.setItem('_account', account); 
} 

index.html

function loadData() { 
    var account = localStorage.getItem('_account'); 
    if (!account) return false; 
    localStorage.removeItem('_account'); 
    //decodes a string data encoded using base-64 
    account = atob(account); 
    //parses to Object the JSON string 
    account = JSON.parse(account); 
    //do what you need with the Object 
    fillFields(account.User, account.Pass); 
    return true; 
} 

Przekazanie obiektu z jednej strony na drugą przez url jako kwerendy(search)

login.html

function saveData(user, pass) { 
    var account = { 
    User: user, 
    Pass: pass 
    }; 
    account = JSON.stringify(account); 
    account = btoa(account); 
    location.assign("index.html?a=" + account); 
} 

index.html

function loadData() { 
    var account = location.search; 
    if (!account) return false; 
    account = account.substr(1); 
    //gets the 'a' parameter from querystring 
    var a = (/^a=/); 
    account = account.split("&").filter(function(item) { 
     return a.test(item); 
    }); 
    if (!account.length) return false; 
    //gets the first element 'a' matched 
    account = account[0].replace("a=", ""); 
    account = atob(account); 
    account = JSON.parse(account); 
    //do what you need with the Object 
    fillFields(account.User, account.Pass); 
    return true; 
} 

Zobacz rozszerzoną odpowiedź tutaj: https://stackoverflow.com/a/30070207/2247494

5

Pliki cookie! Pyszne dla twojego brzuszka.


To było zabawne, ale tutaj jest prawdziwa odpowiedź. Prawdopodobnie chcesz przechowywać informacje w pliku cookie. Jest to dobry sposób przekazywania informacji z jednej części aplikacji internetowej do innej. Jest to powszechna technika, więc wszystkie platformy ją obsługują.

Pamiętaj, że pliki cookie są publiczne, więc nie umieszczaj żadnych informacji, które mogą zostać zaatakowane przez hakerów. Powinieneś zaszyfrować i zaszyfrować wartość w pliku cookie. Możesz także generować losowe informacje - to jest najlepsze. Na przykład, gdy użytkownik się zaloguje, wygeneruje liczbę losową i zapisze ten numer oraz identyfikator użytkownika w tabeli, a następnie przekaże losową liczbę jako plik cookie. W ten sposób tylko Twój DB ma informację i nie można włamać cookie (przez dodanie jednego np.)

+1

Najwyraźniej najlepsza odpowiedź w oparciu o zalety techniczne ;-) (nie jestem ** nie ** downvoter) – jahroy

+0

@jahroy Od lat badam ciasteczka! – Hogan

+2

@Hogan A to pokazuje! Jack - ciasteczka nie mają być bezpieczne, więc uważaj, co przechowujesz w nich (tj. Nazwy użytkownika i hasła). – nick

1

Można użyć encodeURI('some text to encode') do drugiej części pytania

3

Można użyć jQuery -cookie wtyczki:
https://github.com/carhartl/jquery-cookie

Zastosowanie:

<script src="/path/to/jquery.cookie.js"></script> 

Tworzenie cookie sesji:

$.cookie('cookieName', 'myValue'); 

Tworzenie wygasa cookie 7 dni od tej pory:

$.cookie('cookieName', 'myValue', { expires: 7 }); 

Czytaj ciasteczko:

$.cookie('cookieName'); // => "myValue" 

Usuń ciasteczko:

$.removeCookie('cookieName'); 
+0

Użyłem tej wtyczki, jest dobrze! Ale nie potrzebujesz plików cookie, po prostu użyj [** [localStorage] (http://hacks.mozilla.org/2009/06/localstorage/) **], aby zapisać lokalne dane. – jherax

Powiązane problemy