如果这个问题已经得到解答,我提前表示歉意。我已经用谷歌搜索了几个小时了,但仍然没有找到任何似乎可以回答我的确切问题的东西。
本质上,我有一个非常复杂/高度风格化的 View ,它显示从数据库中提取的特定于用户的数据。我已将数据捕获为 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保存在父窗口的全局变量中,并在弹出窗口代码中引用它
关于jquery - 将大型 JSON 对象传递到新窗口中的另一个页面。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18325356/