如何在Javascript中将变量从一个文件发送到另一个文件?

时间:2013-06-25 23:26:50

标签: javascript jquery html

我想从第login.html页向index.html发送用户名和密码。我怎样才能尽可能轻松地做到这一点?我如何编码我的字符串,以便它们是URL编码和UTF-8?

干杯

4 个答案:

答案 0 :(得分:16)

您可以使用 Cookie window.name,按网址发送数据作为查询字符串,或通过web storage发送数据。

在这个问题中,我将从一个页面保存数据,并使用 localStorage - specs)从其他页面读取数据,和以下方法:

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

通过网址将对象从一个页面传递到另一个页面查询字符串 (搜索)

<强>的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

答案 1 :(得分:6)

缓存!你肚子好吃。


这很有趣,但这是一个真正的答案。您可能希望将信息存储在cookie中。这是将信息从Web应用程序的一部分传递到另一部分的好方法。这是一种常用技术,因此所有平台都能很好地支持它。

请记住,Cookie是公开的,因此请勿提供任何可被黑客入侵的信息。您应该散列和/或加密cookie中的值。您还可以生成随机信息 - 这是最好的。例如,当用户登录时生成随机数并将该数字和用户ID存储在表中,然后将随机数作为cookie传递。通过这种方式,只有您的数据库具有信息,您无法破解cookie(例如,通过添加一个cookie)。

答案 2 :(得分:3)

您可以使用 jquery-cookie 插件:
https://github.com/carhartl/jquery-cookie

用法:

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

创建会话cookie:

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

从那时起7天内创建过期的Cookie:

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

阅读Cookie:

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

删除Cookie:

$.removeCookie('cookieName');

答案 3 :(得分:1)

您可以在问题的第二部分使用encodeURI('some text to encode')