2013-06-25 18 views
6

Я хочу отправить имя пользователя и пароль со страницы login.html до index.html. Как я могу сделать это как можно проще? И как я кодирую свои строки так, чтобы они были закодированы в URL и UTF-8?Как отправить переменные из одного файла в другой в Javascript?

Cheers

+0

Отъезд [это] (http://stackoverflow.com/q/11581543/778118). Кроме того, на эту тему имеется много информации. Вы должны включить свой Google. – jahroy

+0

«_Questions должны продемонстрировать минимальное понимание проблемы, которая будет решена. Расскажите, что вы пытались сделать, почему это не сработало и как это должно работать.» «Голосование, чтобы закрыть. – jahroy

+0

Окрашенный дубликат: * – Jack

ответ

16

Вы можете использовать печенье, window.name, отправьте данные по URL-адресу в качестве запроса или через web storage.

В этом exaple я собираюсь сохранить данные из одной страницы и читать его с другой страницы с помощью localStorage - specs(), и следующие методы:

логин.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; 
} 

Передача объекта от одной страницы к другой URL, как QueryString(поиск)

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

Смотрите расширенный ответ здесь: https://stackoverflow.com/a/30070207/2247494

5

Cookies! Вкус для вашего животика.


Это было весело, но вот реальный ответ. Вероятно, вы хотите хранить информацию в файле cookie. Это хороший способ передать информацию из одной части вашего веб-приложения в другую. Это обычная методика, поэтому все платформы поддерживают ее хорошо.

Помните, что файлы cookie являются общедоступными, поэтому не помещайте какую-либо информацию, которая может быть взломана. Вы должны хэшировать и/или шифровать значение в файле cookie. Вы также можете генерировать случайную информацию - это лучше всего. Например, когда пользователь регистрируется в генерации случайного числа и сохраняет этот номер и идентификатор пользователя в таблице, передайте случайное число в качестве файла cookie. Таким образом, только ваша БД имеет информацию, и вы не можете взломать печенье (путем добавления одного, например.)

+1

Очевидно, что лучший ответ основан на технических достоинствах ;-) (я ** не ** вниз) – jahroy

+0

@jahroy Я изучал куки в течение многих лет! – Hogan

+2

@ Хоган И это показывает! Джек - файлы cookie не предназначены для обеспечения безопасности, поэтому будьте осторожны с тем, что вы храните в них (например, имена пользователей и пароли). – nick

1

Вы можете использовать encodeURI('some text to encode') ко второй части вашего вопроса

3

Вы можете использовать JQuery -cookie плагин:
https://github.com/carhartl/jquery-cookie

Использование:

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

Создать куки сессии:

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

Создать истекающую печенье, 7 дней с тех пор:

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

чтение печенье:

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

Удалить куки:

$.removeCookie('cookieName'); 
+0

Я использовал этот плагин, это хорошо! Но вам понадобятся файлы cookie, просто используйте [** [localStorage] (http://hacks.mozilla.org/2009/06/localstorage/) **] для сохранения локальных данных. – jherax

Смежные вопросы