2014-02-17 51 views
1

我使用d3.js繪製了一些圖。在d3.tsv函數中,我將一個URL傳遞給了一個php腳本,該腳本對數據庫執行一些查詢並將輸出以TSV格式返回給客戶端。在客戶端的文件中寫入用於繪製d3圖形的數據

如:

d3.tsv("getData.php", function(error, data) { 
     data.forEach(function(d) { 
     d.date = parseDate(d.date); 
     d.close = +d.close; 
     }); 

是否有某種方式把一個下載按鈕,這樣,當用戶點擊該按鈕時,得到的數據在客戶端文件下載繪製圖形沿未做要求「 getData.php「。 換句話說,我不想再從服務器獲取數據。相反,我想使用之前獲取的數據,同時繪製圖形。

非常感謝您的寶貴意見。

回答

0

這看起來可能會有所幫助:http://blogs.adobe.com/cantrell/archives/2012/01/how-to-download-data-as-a-file-from-javascript.html

我目前工作的一個HTML/JavaScript的應用程序,讓您在客戶端上完全創作的內容。我想讓用戶下載該內容並將其保存在本地,但不會將其從服務器上彈出。經過一些試驗和錯誤之後,我使用數據URI可以很好地工作。而不是解釋它,它可能是最簡單的只顯示代碼:

HTML:

<a href="javascript:onDownload();">Download</a>

JavaScript代碼:

function onDownload() { document.location = 'data:Application/octet-stream,' + encodeURIComponent(dataToDownload); }

唯一的限制是,我不能找出一種方法給下載的文件一個名字(並得出結論認爲它目前不可能,儘管我很高興被證明是錯誤的)。我只測試了Safari和Chrome中的代碼,在這兩種情況下,文件名都默認爲「下載」(沒有擴展名)。所有的數據都在文件中,但對最終用戶來說這不是一個非常直觀的體驗。

+0

上述代碼中給出的解決方案適用於Chrome和Firefox,但不適用於IE。 – Vaibhav

相關問題