在以下代码中:
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>
答案 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)不支持它,所以请记住这一点。
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;