CSV と JavaScript を含むドキュメントが同じオリジンから提供されている場合は、これを行うことができます。(詳細:同一生成元ポリシー)
XMLHttpRequest
objectを使用してデータを取得すると、テキストとして返されます。次に、CSV データの複雑さに応じて、String#split
( spec , MDN ) を使用して行 (行)String#split
の配列を取得し、ループで再度使用して各行の値の配列を取得するのと同じくらい簡単です。 . 私が「複雑さに応じて」と言ったのは、CSV は改行やコンマを含む可能性のある引用符付きのセルを含む、人々が思っているよりも複雑な形式だからです。ただし、データがこれらの機能を使用していない場合は、数回のsplit
呼び出しでうまくいきます。データがより多くの機能を使用する場合は、完全な RFCに従って解析を処理するライブラリを見つける必要があるかもしれません。
完全な例を次に示します。ライブソース
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>Load CSV</title>
</head>
<body>
<script>
(function() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = handleStateChange;
xhr.open("GET", "http://jsbin.com/ocuqog/1");
xhr.send();
display("Request sent");
function handleStateChange() {
if (xhr.readyState == 4 &&
xhr.status >= 200 &&
xhr.status < 300) {
display("Got response");
showData(xhr.responseText);
}
}
function showData(data) {
var rows = data.split(/\s+/);
var rowNum;
var cells;
var cellNum;
for (rowNum = 0; rowNum < rows.length; ++rowNum) {
cells = rows[rowNum].split(",");
display("row " + rowNum +
" has " + cells.length + " values(s)");
display("row " + rowNum + "'s first value is " +
cells[0]);
}
}
function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}
})();
</script>
</body>
</html>