【问题标题】:How to pass data between two pages with Javascript如何使用Javascript在两个页面之间传递数据
【发布时间】:2013-11-24 21:07:42
【问题描述】:

我在 SO 上看到了与此类似的其他几个问题,但它们都不是我真正想要的,所以希望这不会被视为重复。

我有一个使用 jQuery Mobile 构建的客户端 Javascript/HTML5 Web 应用程序。我发现性能可能会很慢,并且有人认为 DOM 中发生的事情太多可能是原因。我的应用程序确实有几个 data-role="page" div,它们可能会在单个 html 页面中增加 DOM。我正在尝试将我的应用程序拆分为几个 html 页面以提高性能,但我希望用户的体验是无缝的。这意味着我需要在我的应用程序中的物理 html 页面之间传递 Javascript 变量。

到目前为止,我在搜索中看到了以下选项:

  1. 在转到其他页面的 url 中使用查询字符串。 - 我不确定我是否希望我的用户在地址栏中看到一个可能相当大且令人困惑的查询字符串。
  2. 使用像 ASP.Net 或 PHP 这样的服务器端代码来处理回发数据。 - 我对此持开放态度,但我不确定它会如何工作。我不想将我的 html 页面转换为 aspx 或 php 文件。我可以有一个简单的服务器端脚本,可以将回发数据嵌入到常规的 html 文件中吗?
  3. 使用 Cookie 存储相关数据。 - 我也不确定这一点,因为我的大多数用户都在可能限制 cookie 使用的企业环境中。

还有其他方法可以做到这一点吗?在这一点上,我倾向于某种服务器端处理。如果这是最好的方法,有人能指出我正确的方向吗?

【问题讨论】:

  • jQuery Mobile 性能问题主要是由于与之相关的大量样式。将样式表剥离到您需要的内容并删除其他所有内容.. 压缩图像.. 使用多个 html 文件不是一个好的选择,因为它肯定会干扰用户体验部分.. 下次不要使用 jquerymobile,而是使用 angular。 js/backbone.js 与引导模板..
  • 我一直在使用 dojo,我不得不说 jQuery Mobile 看起来已经不那么笨重了。
  • :).. 当你开始使用 js 框架时,你会意识到你一直在乘坐校车。它的速度要快得多,而且 jquerymobile 远不及...

标签: javascript php html asp.net query-string


【解决方案1】:

如果您符合 HTML5 标准,本地存储将是一种选择。它将存储值,减少对任何服务器的调用,直到您真正准备好更新所有信息,并且即使关闭浏览器,信息也会出现;像这样使用会话存储或 JS

window.onbeforeunload = function() {
  localStorage.removeItem(key);
  return '';
};

如果您需要在关闭浏览器时清除本地存储的敏感信息。

请记住,您传递到本地存储中的任何内容都将以字符串形式出现,因此当您从存储中获取信息时,您需要将其转换为适当的数据类型。

您也将被限制为存储 5 兆数据(我相信这是标准的),但如果您的表单需要这么多信息,您可能还会遇到其他问题。 :)

查看这些以获取更多信息

http://msdn.microsoft.com/en-us/library/bg142799(v=vs.85).aspx

http://dev.w3.org/html5/webstorage/

【讨论】:

    【解决方案2】:

    使用本地存储。 localStorage 允许您在浏览器中存储值。

    【讨论】:

      【解决方案3】:

      如果您只关心 GET 是用户看到冗长的查询字符串,则可以使用 POST 而不是 GET。

      【讨论】:

      • 我的其他页面无法使用 Javascript 访问 POST 数据。我需要某种服务器端脚本来处理它,然后如何将数据获取到 html 页面或 Javascript?
      • 点了。我是一名后端开发人员,忘记了你只想要客户端,如果你能提供帮助的话。
      • 但是您也可以使用服务器端代码来编写您的 javascript 或为 javascript 编写值。我会选择后者,因为它需要更少的服务器端代码编写 javascript 块。
      • 那会是什么样子?我能否以某种方式在我的 HTML 页面中注入一个简单的脚本标签来创建和分配全局变量?
      • 取决于您使用的服务器端语言。将一个 javascript 块放在您的 html 上,并将服务器端代码写入 javascript 变量。以下链接在 php.stackoverflow.com/questions/10677966/… 中显示了此方法
      【解决方案4】:

      试用本地存储或会话存储http://www.w3schools.com/html/html5_webstorage.asp

      【讨论】:

      • 在企业环境中,本地存储是否会像 cookie 一样受到限制?
      • 实际上,我从来没有听说过这样的限制,所以我没有“布尔”的答案。但我知道很多现代网站/应用程序都在使用它们
      • 不推荐 w3schools.com 作为参考。它充满了错误,请参阅w3fools.com
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多