写入用于在客户端的文件中绘制d3图形的数据

时间:2014-02-17 15:37:40

标签: javascript d3.js plot

我使用d3.js绘制了一些图表。在d3.tsv函数中,我将URL传递给php脚本,该脚本对数据库执行一些查询并以TSV格式将输出返回给客户端。

e.g:

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

是否有某种方法可以将下载按钮与绘图图形放在一起,这样当用户点击按钮时,数据会被下载到客户端的文件中,而不会再次请求“getData.php”。 换句话说,我不想再从服务器获取数据。相反,我想在绘制图形时使用先前获取的数据。

提前感谢您的宝贵意见。

2 个答案:

答案 0 :(得分: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中的代码,在这两种情况下,文件名默认为“下载”(没有扩展名)。所有数据都在文件中,但对最终用户来说并不是一种非常直观的体验。

答案 1 :(得分:0)

我明白了。我使用Downloadify工具为我做这项工作。

https://github.com/dcneiner/Downloadify