【问题标题】:Error with jQuery get of a CSV filejQuery 获取 CSV 文件时出错
【发布时间】:2011-11-18 16:51:24
【问题描述】:

这是我的相关 jQuery 代码:

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

sampleData.csv 文件的前几行如下所示:

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

我收到 2 个错误。 在 csv 文件的第一行出现错误

语法错误

在第二行代码我得到错误

data.split 不是函数

我做错了什么?

ETA根据firebug控制台,responseText如下:

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

ETA我在尝试将数据拆分为行之前添加了数据警报,我得到以下信息:

[对象 XMLDocument]

【问题讨论】:

  • 您遇到的具体语法错误是什么。

标签: jquery csv get


【解决方案1】:

我相信您误解了 jQuery.get() 的用途。

来自doc page"...Load data from the server using a HTTP GET request...."

对文件执行 $.get() 不会将该文件的数据转换为可以使用的结构。您必须通过服务器请求此内容,然后该服务器将提供 .csv 数据......它应该类似于以下内容

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

编辑:: 既然你说数据被正确地“加载”了,试试这个fiddle。它工作得很好。


EDIT2::

您上次的编辑提供了一些有趣的见解。当它提取 .csv 文件时,会将其转换为 XML 与文本的类型。请尝试以下操作:

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

这应该将返回的“数据”转换为正确的字符串格式。

【讨论】:

  • 根据萤火虫控制台,它似乎正在正确检索数据。
  • 您的第一个答案(误解 jQuery get)似乎是正确的。谢谢!
【解决方案2】:

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/

【讨论】:

    【解决方案3】:

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

    $.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。

    【讨论】:

      猜你喜欢
      • 2018-09-01
      • 1970-01-01
      • 2016-12-18
      • 1970-01-01
      • 2020-01-29
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多