2013-04-01 40 views
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代碼可能是數百行:(。)

+1

使用POST與請求正文中的字符串。 GET請求通常限於(最多)8KB – Omri

+0

我將如何發送POST數據? – microbug

+0

你將不得不配置你的export.php文件來處理POST數據。您可以將表單數據或JSON,XML發送到發佈數據,無論您想要什麼。 – Omri

回答

2

大多數UA限制GET請求。 POST代替。

0

你可以把它保存在session變量和訪問其他網頁...但不雖然最佳實踐...

0

這是很難說的限制,

瀏覽器可以有限制,對於post vs得到

的代理可以有個限度,爲崗位VS得到

一個Web服務器可以有一個限度,爲崗位VS得到

應用本身可以設置限制...

正如所建議的,你可以寫一個svg文件併發送url。

svg文件有多大?

+0

隨着用戶輸入自己的數據,它可能會有所不同。儘管如此,最高可能至少有100 LOC。 – microbug

0

您可能希望使用window.postMessage來處理您的主應用程序窗口和彈出窗口之間的通信,這樣您就可以僅保留在客戶端。

相關問題