外部CSVファイルからデータを取得して、javascriptで操作したい場合がある。そんなときには、jQueryとjquery.csv.jsを使うのが最も簡単である。
ところが、この方法を紹介しているサイトがいくつかあるのに、紹介されているコードを実行しても動作しなかった。これは、jquery.csv.jsのバージョンアップや開発環境の変化のためである。そこで、現在の時点(2023-04-13)で動作するコードを紹介する。
jquery.csv.jp の環境変化
まず、jquery.csv.jpに起きた変化を上げる。他サイトのコードが動作しなかった原因である。
$.csv()(data) は使えない
jquery.csv.jsの現在のバージョンは1.0.21である。バージョンアップのため、他サイトで紹介されている
var csv = $.csv()(data)
のようなコードは使えなくなっている。以下のように置き換える。
var csv = $.csv.toArrays(data)
開発場所
以前はGoogleのサイトで開発されていたようだが、現在はGitHubに移動している。
CDNサイトの場所
最新版のURLは以下である。
$.get()でdataTypeを指定する
こちらは、jquery.csv.jsではなくjQueryの問題だが、$.get()でdataTypeを指定する必要がある。他サイトでdataTypeをつけていないコードがあったが、これを省略するとparseerrorが出る場合がある(ブラウザやjQueryのバージョンによるので、必ずエラーになるわけではない)。
$.get(csvfile, readCsv);  -->  $.get(csvfile, readCsv, 'text');
コードの例
以上に対応したhtmlのコード例をリスト1に示す。なお、test.csvはリスト2のようになっている。図1はブラウザ画面のスクリーンショットである。
<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="utf-8">
	<script src="https://code.jquery.com/jquery-3.6.0.min.js"
	  integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
	  crossorigin="anonymous"></script>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-csv/1.0.21/jquery.csv.min.js"></script>
	<script>
		function readCsv(data) {
			var target = '#csv-body';
			var csv = $.csv.toArrays(data);
			var insert = '';
			$(csv).each(function() {
				if (this.length > 0) {
					insert += '<tr>';
					$(this).each(function() {
						insert += '<td>' + this + '</td>';
					});
					insert += '</tr>';
				}
			});
			$(target).append(insert);
		}
		var csvfile = 'test.csv';
		$(function(){
			$.get(csvfile, readCsv, 'text');
		});
	</script>
	<link rel='stylesheet' href='list.css'>
</head>
<body>
	<table>
		<caption>紫陽花の名所</caption>
		<thead>
			<tr><th>名前</th><th>場所</th><th>種類</th><th>株数</th></tr>
		</thead>
		<tbody id='csv-body' />
	</table>
</body>
</html>
"恋し野の里あじさい園","和歌山県橋本市",30,6000
"矢田寺","奈良県大和郡山市",60,8000
"吉野山","奈良県吉野郡吉野町",,4000
(以下略)
変更履歴
- 2023-04-20: CDN におけるバージョンを修正(1.0.11 -> 1.0.21)
- 2021-12-08: jquery.csv.js のバージョンを修正(1.0.11 -> 1.0.21)
 jquery.js のバージョン(3.5.1 -> 3.6.01.0.21)およびintegrityを修正
- 2020-10-14: jquery.csv.js のバージョンを修正(1.0.08 -> 1.0.11)
- 2019-12-27: jquery.csv.js のバージョンを修正(1.0.5 -> 1.0.8)
- 2019-10-19: jquery.jsのCDNについて、jQueryサイトの指定に従って、<script>ノードの記述を変更
- 2019-08-26: jquery.csv.js のバージョンを修正(0.8.9 -> 1.0.5)
