"未捕获的TypeError:csv.replace不是函数"当使用csv jquery插件时,我该如何解决这个问题?

时间:2017-07-03 21:03:08

标签: javascript jquery csv

在以下代码中:

  var rawFile = new XMLHttpRequest();
  rawFile.open("GET", "file://csvFileName.csv", true);
  console.log(rawFile);
  var input = $.csv.toObjects(rawFile);
  console.log(input);

我试图将.csv文件转换为可读文件,然后我尝试在其上运行.toObjects命令以生成一个更易于使用的csv文件,但我一直遇到一个"未捕获的TypeError:csv.replace不是一个函数"第四行错误。我使用最受欢迎的this问题答案为基础。

我已阅读了文档,但我似乎无法找到此错误的特定答案,是否有人知道修复?

编辑:这不是我的整个代码,我有一个脚本链接到我的html标头中的jquery插件。这只是错误的部分。链接看起来像:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-csv/0.71/jquery.csv-0.71.min.js"></script>

3 个答案:

答案 0 :(得分:1)

您需要发送AJAX请求,并在回调函数中调用$.csv.toObjects()。它的参数必须是AJAX响应中的字符串。

var rawFile = new XMLHttpRequest();
rawFile.open("GET", "file://csvFileName.csv", true);
rawFile.onload = function() {
    var input = $.csv.toObjects(this.responseText);
    console.log(input);
};

答案 1 :(得分:0)

XMLHttpRequest不是一个文件,您应该使用XMLHttpRequest的open函数执行请求,或者请参阅下面的文件,之后您应该从响应数据中获取该文件。 你可以改用:

fetch("file://csvFileName.csv").then(function(resp) {
    return resp.blob();
}).then(function(blob) {
    var file = new File([blob], "name");
    var input = $.csv.toObjects(rawFile);
    console.log(input);
});

答案 2 :(得分:0)

首先,您没有正确使用XMLHttpRequest。请参考此站点以了解如何使用它。 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest

其次,如果没有Web服务器来托管您的csv文件,则无法执行此操作。 XMLHttpRequest不支持file://协议。有很多方法可以设置网络服务器,但快速简单的方法是使用this chrome extension.。 然后编辑文件的URL以相对于您的js文件。 (就像你在html中包含css一样)。

您也可以像其他人评论的那样使用Fetch API,但有些浏览器(主要是Internet Explorer)不支持它,所以请记住这一点。

&#13;
&#13;
var rawFile = new XMLHttpRequest();
  rawFile.addEventListener("load", reqListener);
  rawFile.open("GET", "/csvFileName.csv", true);
  rawFile.send();
  function reqListener(){
    var csvText = this.responseText;
    console.log(csvText);
  }
&#13;
&#13;
&#13;