我正在使用Evan plaice jquery-csv libary但由于他的代码在谷歌代码弃用后没有更新,我现在遇到了很多麻烦才能让它正常工作。
我正在使用他上传csv文件的示例,它会解析文档,以便csv文件显示在网页Demo here上。
我从github下载了他的代码,但是由于他导入的googlecode不再工作,我把文件jquery.csv.js放在与我正在使用的文件相同的文件夹中。在jquery.csv.js中,有一个函数被调用,它在html文件中是toArray。我删除了用于<script src="http://jquery-csv.googlecode.com/git/src/jquery.csv.js"></script>
的行并添加了<script type="text/javascript" src="./jquery.csv.js"></script>
但是,无论出于何种原因,它都抱怨未定义toArry。
基本上代码是这样的:
function printTable(file) {
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function(event){
var csv = event.target.result;
var data = $.csv.toArrays(csv); << The line that has problem.
var html = '';
for(var row in data) {
html += '<tr>\r\n';
for(var item in data[row]) {
html += '<td>' + data[row][item] + '</td>\r\n';
}
html += '</tr>\r\n';
}
$('#contents').html(html);
};
reader.onerror = function(){ alert('Unable to read ' + file.fileName); };
}
在开发者控制台中,它表示:
未捕获的TypeError:无法读取未定义的属性'toArrays' 在FileReader.reader.onload(file:///Users/Jace/Downloads/jquery-csv-master/examples/file-handling.html:75:25)
答案 0 :(得分:2)
我认为您遇到的问题是,当您删除对Google Code上托管的jquery-csv库的引用并包含您的本地版本时,您将其置于jQuery本身的引用之上。那是我注意到你所描述的错误的时候。您在JavaScript文件中加载的顺序很重要。例如,当文件B.js
中的JavaScript代码依赖A.js
中的代码时,{/ 1}}需要在 A.js
之前指定。
因此,基本上检查您在HTML文件中指定文件的顺序是否正确:
B.js
此外,前面的<body>
<!-- HTML... -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="jquery.csv.js"></script> <!-- The "./" is not used here -->
<script>
// Code...
</script>
</body>
不是必需的,也不常见。在任何情况下我都没用过它。 ;)
我希望这对你来说更清楚一点!