我正在制作一个使用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代码可能是数百行:(。
答案 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来处理主应用程序窗口和弹出窗口之间的通信,这样您就可以只停留在客户端。