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

标签 jquery ajax json parameter-passing

如果这个问题已经得到解答,我提前表示歉意。我已经用谷歌搜索了几个小时了,但仍然没有找到任何似乎可以回答我的确切问题的东西。

本质上,我有一个非常复杂/高度风格化的 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保存在父窗口的全局变量中,并在弹出窗口代码中引用它

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

关于jquery - 将大型 JSON 对象传递到新窗口中的另一个页面。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18325356/

相关文章:

javascript - 将 Javascript 方法 "createElement"、 "appendChild"、 "setAttribute"更改为 Jquery

Java HttpURLConnection 返回 JSON

javascript - 如何通过点击功能知道提交功能是否有效

带有 If/Else 语句的 Jquery slideToggle

javascript - 单击多个 div 展开/折叠 div

javascript - 通过 jquery (selector).prop() 函数检查的设置 <input> 不适用于动态 html

javascript - 跳出ajax循环

javascript - 来自 Google Docs API 的数据馈送

java - 如何在java中从Json对象中获取元素

javascript - PHP 序列化失败并以半序列化格式存储