小编Kev*_*tie的帖子

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

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

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

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

x = window.open(url);
x.document.write(myJson);
Run Code Online (Sandbox Code Playgroud)

这将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."
}
}
Run Code Online (Sandbox Code Playgroud)

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

$("body").data( "userData", data);
Run Code Online (Sandbox Code Playgroud)

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

var userData = $("body").data("userData");
Run Code Online (Sandbox Code Playgroud)

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

在此先感谢您的帮助,虽然我一定会在发布后确认答案.

ajax jquery json parameter-passing

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

ajax ×1

jquery ×1

json ×1

parameter-passing ×1