Как отправить переменные из одного файла в другой в Javascript?

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

ура

4 ответа

Решение

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

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

login.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 в виде строки запроса (поиск)

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

Смотрите расширенный ответ здесь: /questions/13377648/sohranyat-peremennyie-mezhdu-zagruzkami-stranits/13377664#13377664

Печенье! Вкуснятина для твоего животика.


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

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

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

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

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

Создать сессионный cookie:

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

Создайте истекающий cookie, через 7 дней:

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

Прочитать cookie:

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

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

$.removeCookie('cookieName');

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

Другие вопросы по тегам