0

我正在制作一个使用 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

4 回答 4

2

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

于 2013-04-01T11:17:48.980 回答
0

您可以将其存储在会话变量中并在其他页面上访问它......但不是最佳实践......

于 2013-04-01T11:18:23.823 回答
0

界限很难说,

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

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

Web 服务器可以有一个限制,对于 post vs get

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

ETC

正如建议的那样,您可以编写一个 svg 文件并发送 url。

svg 文件有多大?

于 2013-04-01T11:20:37.057 回答
0

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

于 2013-04-02T13:31:22.947 回答