如何将一个非常长的字符串从一个页面传递到另一个页面?

时间:2013-04-01 11:15:08

标签: php javascript jquery svg d3.js

我正在制作一个使用SVG,d3.js和JQuery的数据可视化工具。我目前正在制作一个导出(和下载)SVG文件的功能:

// Code on main page
var svg = $("#svg-wrap").html();
var win = window.open("export.php?svg=" + svg, '_blank'); // _blank means export.php opens in a new tab
win.focus;

// Code in export.php
<?php
ob_start();
header("Content-Type: application/octet-stream");
header("Content-disposition: attachment; filename=data.svg");
$svg = $_GET["svg"];
echo stripslashes($svg);
?>

虽然这不起作用,因为虽然传递了一些SVG,但完整的代码对于查询字符串来说太长了(或者看起来似乎如此)。

有什么方法可以解决这个问题吗?我可以使用压缩,但这只会缩小到极限,我认为它可能仍然太长 - SVG代码可能是数百行:(。

4 个答案:

答案 0 :(得分:2)

大多数UA都对GET请求设置了限制。改为使用POST。

答案 1 :(得分:0)

您可以将其存储在会话变量中并在其他页面上访问...但不是最好的做法...

答案 2 :(得分:0)

很难说出这个限制,

浏览器可以有限制,对于post vs get

代理可以有限制,对于post vs get

对于post vs get

,Web服务器可以有限制

应用程序本身可以设置限制......

根据建议,您可以编写svg文件并发送网址。

svg文件有多大?

答案 3 :(得分:0)

您可能希望使用window.postMessage来处理主应用程序窗口和弹出窗口之间的通信,这样您就可以只停留在客户端。