我想将 javascript 对象从一个页面传递到另一个页面,这样任何人都可以告诉我该怎么做?
使用 jQuery 可以这样做吗?
我想将 javascript 对象从一个页面传递到另一个页面,这样任何人都可以告诉我该怎么做?
使用 jQuery 可以这样做吗?
服务器端回传
在您的页面上有一个 POST 表单并将您的序列化对象保存在隐藏的输入中,然后将其发布到另一个页面。您将能够在服务器上处理该数据,并且很可能以某种方式将其放回页面中。无论是作为 javascript 对象还是其他任何东西。
客户端 URL 检查
通过将序列化对象附加到 URL来向您的其他页面发出 GET 请求:
http://www.app.com/otherpage.xyz?MyObject=SerializedData
那其他使用Javascript网页就可以轻松地分析它的URL和反序列化数据。
有什么意义window.name
=本地跨页会话
这是一种特殊的技术,也用于作为字典公开的特殊 javascript 库window.name
,因此您可以将许多不同的对象保存到其中并将其用作本地跨页面会话。它有一些大小限制可能会影响您,但请检查链接页面并测试您的浏览器。
HTML5 本地存储
HTML5 具有本地存储功能,您可以将其完全用于这些目的。但是使用它很大程度上取决于您的浏览器要求。虽然现代浏览器支持它,即使在重新启动浏览器或计算机后也可以恢复数据......
饼干
您可以随时使用 cookie,但您可能会遇到它们的限制。尽管 cookie 能够比当前窗口会话保存更长的数据,但如今 cookie 并不是最佳选择。
在某些大写情况下,您当然必须在客户端使用某种(反)序列化程序。反序列化器很容易找到(jQuery 已经包含了一个很棒的功能$.getJSON()
)并且很可能已经是您当前 javascript 库的一部分(更不用说eval()
)。
但是对于 JSON 字符串序列化的对象,我推荐json2.js 库,这也是John Resig推荐的。该库使用浏览器内实现的 JSON(反)序列化功能(如果它们存在)或在它们不存在时使用它自己的实现。因此推荐。
只有当页面同时存在时才有可能,并且一个页面是从另一个页面打开的,这样您就可以引用其他页面的 windows 对象。
如果你从一个页面导航到另一个页面,它们不会同时存在,所以你不能那样交流。您必须将对象序列化为可以在请求中发送的字符串,例如在查询字符串中发送 JSON。
持久化数据的方式有很多种,比如查询字符串、发布数据、cookies、窗口名称或 HTML5 本地存储,但所有这些方法都只能持久化字符串值,而不是 Javascript 对象。
这是可能的,您有几个选择。
本地存储
可以在任何阶段添加/编辑/删除并跨域访问。(在 ie6 和 ie7 中本地不起作用,但有解决方法)
窗口对象
我会在这不是最好的解决方案周围放一个很大的警告,它根本不安全,所以只将它用于不需要保密的事情。window.name = { "json" : "object"}
然后在下一页的 window.name 属性中可用。
我相信将 javascript 对象从一个页面传递到另一个页面的唯一方法是将它序列化为字符串并在 url 中传递它。例如,如果您有对象
var temp = { id: 1, value: 'test' }
例如,您可能希望使用JSON-js 对其进行序列化并将其传入http://mysite.com/?data=serialization
。然后在加载页面后,您需要通过例如反序列化它$.parseJSON()
。
如果您的应用程序使用会话,您可以将其序列化(根据其他答案),然后将其 POST 到服务器,并将其存储在会话变量中。在下一页中,您从会话变量中检索它。