将csv文件加载到d3而不发送到服务器

问题描述:

有没有办法将csv数据加载到d3.csv而不发送到服务器?我试图使用dataURI,但它不工作...将csv文件加载到d3而不发送到服务器

我有一种形式,用户可以从他们的计算机中选择一个csv文件。

<input type='file' onchange="readURL(this);"/> 

这导致readURL函数从该文件创建dataURI。

function readURL(input) { 
    if (input.files && input.files[0]) { 
     var reader = new FileReader(); 

     reader.onload = function (e) { 
      $('#file_url') 
      .attr('data-file-url', f.target.result); 
     }; 

     reader.readAsDataURL(input.files[0]); 
    } 
} 

然后,我有一个脚本来窃取dataURI从#file_url DIV并输入到d3.csv:

var address = $('#file_url').attr('data-file-url'); 
d3.csv(address,function(csv){ 
    do stuff with that csv 
} 

问题是我得到一个跨域错误。

+0

您是否尝试将该文件读入字符串并使用['d3.csv.parse()']进行解析(https://github.com/mbostock/d3/wiki/CSV#wiki-parse )? –

+0

立即尝试。将csv文件解析为字符串的正确方法是什么?现在JavaScript只读取文件的第一行作为字符串,其余的则触发错误。我认为这是一个多线问题。 – bumpkin

+1

您应该按原样阅读文件,不进行任何转换。如果你使用'd3.csv.parse()'不成功,你可以尝试使用'parseRows()'。 –

您可以使用File API,但不支持关闭浏览器,特别是IE。更多检查this

+0

和我在做什么不一样吗? – bumpkin