将大JSON对象传递到新窗口中的另一个页面。

如果已经回答,我会提前道歉。 我已经用Google搜索了几个小时了,我仍然没有找到任何似乎可以回答我确切问题的内容。

基本上,我有一个非常复杂/高度风格的视图,它显示从数据库中提取的用户特定数据。 我已经将数据捕获为JSON对象,使用.data()将其附加到我的页面主体。 我添加了一个检索JSON对象的按钮,并在新窗口中打开我的打印机友好页面。 我希望能够在这个新窗口中访问/操作特定于用户的JSON对象。 (这都将在同一个域上。)

我见过的大多数解决方案似乎都围绕着打开一个新的空白窗口。 我不想那样做。 我为页面编写了一个布局,我计划运行javascript / css。 我已经看到了涉及打开一个新窗口然后使用document.write的解决方案,如果有一种方法可以在新页面上定位特定元素,这将是很好的。 我试过,例如:

x = window.open(url); x.document.write(myJson); 

这将JSON对象放在新页面上,但完全擦除了我在布局中的所有其他内容。

我也看到了建议使用字符串化然后Base64编码对象的解决方案。 但我担心URL长度限制,因为他们可能会在点击按钮之前收集此页面上的大量数据。

我也看到了建议使用HTML5本地存储的解决方案。 如果没有更好的解决方案,我想我会这样做。 但是,HTML5引发了浏览器兼容性问题,如果可能的话,我宁愿避免使用它们。

这是一些示例代码:

JSON对象:

 { { "name":"Percy Pea.", "bio":"Percy Pea was born in a pod, and lived there happily." }, { "name":"James Cob", "bio":"James Cob was arrested for stalking." } } 

当它作为’数据’从服务器返回时捕获它:

 $("body").data( "userData", data); 

在我打开打印机友好页面按钮的onclick中,我检索JSON对象:

 var userData = $("body").data("userData"); 

这样可行吗? 有没有办法打开一个新窗口,然后将数据插入/附加到其中的特定元素? 或者……也许是其他一些我甚至都没想过的方式。

提前感谢您的任何帮助,虽然我一定会在发布后确认答案。

您可以将json保存在父窗口中的全局变量中,并在弹出窗口代码中引用它

https://stackoverflow.com/a/87737/1755374