jQuery获取CSV文件时出现错误。

3

这是我的相关jQuery代码:

$.get('sampleData.csv', function(data) {
    var lines = data.split('\r\n');

样本数据文件sampleData.csv的前几行如下:

2009,0,2,29.0000
2009,0,6,655.6200

我遇到了两个错误。 在csv文件的第一行,我遇到了以下错误:

语法错误

在代码的第二行,我遇到了以下错误:

data.split不是一个函数

我做错了什么?

预计时间 根据firebug控制台,responseText如下:

2009,0,2,29.0000\r\n2009,...\r\n2011,10,30,494.3500\r\n

预计时间 我在将数据拆分成行之前添加了一个数据警报,结果如下:

[Object XMLDocument]


1
你遇到了什么具体的语法错误? - Rory McCrossan
3个回答

1

我相信你误解了 jQuery.get() 应该用于什么。

从它的 文档页面 中可以看到,"...使用 HTTP GET 请求从服务器加载数据...."

对文件进行 $.get() 操作并不能将该文件的数据获取到可用的结构中。你需要通过服务器请求这些数据,然后服务器会提供 .csv 数据...应该类似于以下内容:

$.get('http://url.to.server.page',function(data){
    var dataStr = new String(data);
    var lines = dataStr.split('\n');
});

编辑: 由于您说数据已经“正确加载”,请尝试这个fiddle。它可以正常工作。


编辑2:

你的最后一次编辑提供了一些有趣的见解。当它拉取 .csv 文件时,它会将其转换为一种 XML 类型而不是文本。请尝试以下操作:

$.get('http://url.to.server.page',function(data){
    var dataStr = new String(data);
    var lines = dataStr.split('\n');
},dataType='text');

这将把返回的“数据”放入正确的字符串格式中。

根据Firebug控制台显示,它似乎正确地检索了数据。 - dmr
看起来你的第一个答案(误解jQuery get)是正确的。谢谢! - dmr

1

jQuery 代码:

$.get('data.csv', function(data) {
  var lines = data.split('\r\n');
});

适用于jquery版本1.5之前。
从1.5版本开始,在get()方法中传递回调函数的是"jqXHR"对象,而不是"XMLHttpRequest"对象。
代码可以更改为:

$.get('data.csv', function(data) {
  var lines = data.split('\r\n');
}, "text");

然后它就会工作。

http://api.jquery.com/jQuery.get/


0

你差不多到了。缺少最后一个括号并需要不同的分割字符。

$.get('sampleData.csv', function(data) {
var lines = data.split(',');
});

编辑

哦,你把你的 CSV 文件改成了两行,我以为它只是一行用逗号分隔的数据而不是用新行和逗号分隔的数据。以下是我重新测试过并且可以正常工作的内容。

<html>
<head>
<script type="text/javascript">Jquery Reference or insert directly here </script>
</head>
<body>
<script>
$(document).ready(function(){

    $.get('csv.csv', function(data) {
    // Split the lines
    var lines = data.split('\n');
    var i = 0;

    for(i=0; i<lines.length; i++)
    {
       alert(lines[i]);
    }

}); 

});
</script>
</body>

</html> 

我刚把那个HTML文件和你粘贴在同一位置的CSV文件放在了我的桌面上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接