CSV data and JS/HTML
CSV data and JS/HTML
是否可以使用客户端JS从位于URL的CSV文件中打开并提取(到数组中)数据?如果是这样的话,有人能解释一下如何做到这一点吗?因为我正在努力研究如何使用JQuery,因为这些例子似乎从来没有打开csv,他们只使用csv作为变量(这意味着我知道如何首先将其输入代码中,但我不知道)
我需要在浏览器中的JS数组中获取一些天气数据,我将从中生成一些仪表来显示风速和风向。
我的CSV当前托管在这里:http://mrmoneymotivator.com/windspeed/windspeed.csv并且其中有一些伪数据
我目前只想获得仪表的第一行数据(将定期刷新)。一旦我完成了这项工作,我将使用数组在图表中显示历史数据。
非常感谢!
如果CSV和包含JavaScript的文档来自同一来源,那么您当然可以做到这一点。(更多:同源政策)
您可以使用XMLHttpRequest
对象检索数据,该对象会将数据作为文本返回给您。然后,根据CSV数据的复杂性,可以简单地使用String#split
(spec,MDN)来获得行(行)的数组,然后在循环中再次使用String#split
来获得每行的值的数组。我说";取决于复杂性";因为CSV是一种比人们有时怀疑的更复杂的格式,涉及可以包含换行符和逗号的引用单元格。但是,如果您的数据不使用这些功能,只需调用几个split
就可以了。如果您的数据确实使用了更多功能,您可能需要找到一个根据完整RFC处理解析的库。
下面是一个完整的示例:Live Copy | Live Source
<!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>
- Ajax CSV文件
要么使用库(我相信你能够单独搜索JS CSV:)
或
按"''n"拆分以获取行,按","再次拆分以获取值
注意:有时CSV将值放在";做好准备。
我使用的库位于:https://code.google.com/p/jquery-csv/
<script type="text/javascript" src="jquery-csv.js"></script>
<script type="text/javascript">
$.ajax({
url: "http://www.example.com/report.csv",
cache: false
}).done(function( csvData ) {
var arr2D = $.csv.toArrays(input);
});
</script>
注意:未经测试!
- 旋转按钮[HTML][JS]
- 在ajax中发送html+JS
- 使用服务器上的HTML/js在网页上显示图像
- 为什么我从浏览器修改html/js时会多次发送ajax请求
- HTML/JS github页面项目没有't在使用firefox运行时加载图像或声音
- 当按下箭头键时,我的图像以一种奇怪的方式跳跃(HTML+JS)
- Html+js+css的打包程序
- 使用Sails.JS为静态HTML/JS应用程序提供身份验证
- HTML/JS表单已提交两次
- Heroku类型的简单HTML/JS应用程序托管
- HTML JS在DIV中附加随机图像
- 如何将从GWT编译的JS添加/访问到另一个外部HTML / JS项目中
- 如何从我的机器提供HTML + JS + CSS网络应用程序,以便其他人可以查看它
- HTML + JS:设置文本区域内容样式的最佳方式
- 如何在html / JS中展开或关闭内容 - 始终分配给不同的id
- HTML/JS 如何输入文本并使其显示在屏幕上
- 从导入的 HTML/JS 文件中提取变量
- 我们怎么知道消除HTML/JS/CSS文件中的空白可以缩短页面加载时间呢
- "捆绑;仅适用于HTML/JS的解决方案
- 是否覆盖网站上文本输入区域的默认移动设备键盘?(HTML/JS/jQuery)