2013-06-25 3 views
6

Ich möchte einen Benutzernamen und ein Passwort von Seite login.html an index.html senden. Wie kann ich das so einfach wie möglich machen? Und wie kodiere ich meine Strings, damit sie URL-codiert und UTF-8 sind?Wie kann man in Javascript Variablen von einer Datei zur anderen senden?

Prost

+0

Überprüfen Sie [this] (http://stackoverflow.com/q/11581543/778118). Außerdem gibt es viele Informationen zu diesem Thema. Sie sollten Ihr Google einschalten. – jahroy

+0

"_Fragen müssen ein minimales Verständnis des zu lösenden Problems aufweisen. Sagen Sie uns, was Sie versucht haben zu tun, warum es nicht funktioniert hat und wie es funktionieren soll." "Abstimmung zum Schließen. – jahroy

+0

Gekennzeichnetes Duplikat: * – Jack

Antwort

16

Sie Cookies verwenden, können, window.name, senden Sie Daten per URL als Querystring oder über web storage.

In diesem exaple Ich werde Daten von einer Seite speichern und sie von einer anderen Seite mit dem localStorage lesen - (specs), und die folgenden Methoden:

anmelden.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; 
} 

Passing das Objekt von einer Seite zur anderen von URL als Abfragezeichen(Suche)

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; 
} 

eine erweiterte Antwort Siehe hier: https://stackoverflow.com/a/30070207/2247494

5

Cookies! Lecker für deinen Bauch.


Das war lustig, aber hier ist eine echte Antwort. Wahrscheinlich möchten Sie Informationen in einem Cookie speichern. Dies ist eine gute Möglichkeit, Informationen von einem Teil Ihrer Webanwendung an einen anderen zu übergeben. Es ist eine übliche Technik, so dass alle Plattformen es gut unterstützen.

Denken Sie daran, dass Cookies öffentlich sind, also stellen Sie keine Informationen, die gehackt werden können. Sie sollten den Wert in einem Cookie hash und/oder verschlüsseln. Sie können auch zufällige Informationen generieren - das ist das Beste. Wenn sich ein Benutzer beispielsweise anmeldet, eine Zufallszahl generiert und diese Nummer sowie die Benutzer-ID in einer Tabelle speichert, wird die Zufallszahl als Cookie übergeben. Auf diese Weise nur hat Ihre DB die Informationen und Sie das Cookie nicht hacken kann (durch ein beispielsweise hinzufügen.)

+1

Offensichtlich die beste Antwort basierend auf technischen Verdienst ;-) (Ich bin ** nicht ** der Downvoter) – jahroy

+0

@Jahry Ich recherchiere seit Jahren Cookies! – Hogan

+2

@Hogan Und es zeigt! Jack - Cookies sind nicht dazu bestimmt, sicher zu sein, also sei vorsichtig, was du in ihnen speicherst (zB Benutzernamen und Passwörter) – nick

1

Sie encodeURI('some text to encode') auf den zweiten Teil Ihrer Frage

3

verwenden können Sie die jquery verwenden können -cookie Plugin:
https://github.com/carhartl/jquery-cookie

Verbrauch:

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

erstellen Session-Cookie:

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

erstellen auslaufenden Cookie, 7 Tage ab dann:

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

lesen Cookie:

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

Cookie löschen:

$.removeCookie('cookieName'); 
+0

Ich habe dieses Plugin verwendet, es ist gut! Aber Sie brauchen keine Cookies, verwenden Sie einfach die [** [localStorage] (http://hacks.mozilla.org/2009/06/localstorage/) **], um lokale Daten zu speichern. – jherax

Verwandte Themen