d3.js使用函数作为csv源而不是csv路径

时间:2016-06-24 03:23:03

标签: javascript csv d3.js

我是d3.js的新手,在加载数据时,我到目前为止看到的例子看起来像

getCurrentInputConnection().commitText("\ud83d\ude01", 1)

我有一个函数返回动态服务器端生成的csv,我使用同步POST ajax生成它们,但为了简单起见,我可以说,我有一个像这样的js函数

d3.csv("path/to/file.csv")...

有没有办法做这样的事情?并且这种方法是否被推荐(同步ajax肯定会导致延迟)

function makeCSV(){
    return "id,value\n"+
           "0,value 1\n"+
           "1,value 2\n"+
}

关于CSV数据加载的其他相关问题是,是否需要提供.csv文件,或者是否可以简单地放置生成和下载动态生成的csv文件的URL,这可以作为AJAX调用的替代品但手动编码每个参数看起来很乏味和非动态

d3.csv(makeCSV())...

1 个答案:

答案 0 :(得分:2)

根据规范d3.csv()要求第一个参数是从中加载CSV的URL。如果您只想解析包含CSV内容的字符串,无论其创建方式如何,您都需要使用d3.csv.parse()代替。对于你的代码,这将是这样的

var rows = d3.csv.parse(makeCSV());



function makeCSV(){
    return "id,value\n"+
           "0,value 1\n"+
           "1,value 2\n";
}

var rows = d3.csv.parse(makeCSV())

console.log(rows);

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
&#13;
&#13;
&#13;