CSV 填充 Table(通过 JS)直到手动刷新才在浏览器中加载视图
CSV Filled Table (Via JS) Not Loading View In Browser Until Manual Refresh
所以我一点儿也不是 JS 专家,但我想在我的 Jekyll 网站上将 CSV 渲染为 table - 我使用以下脚本来处理它。
唯一的问题是它似乎从来没有第一次加载 table,我需要在浏览器中单击刷新才能显示它 - 有人知道这可能是什么原因吗?
<script>
window.onload = function() {
with(new XMLHttpRequest()) {
onreadystatechange = cb;
open('GET', 'https://raw.githubusercontent.com/clintjb/A350-Tracking/main/flight_data_a350.csv', true);
responseType = 'text';
send();
}
}
function cb() {
if (this.readyState === 4) document.getElementById('A350')
.innerHTML = tbl(this.responseText);
}
function tbl(csv) {
return csv.split('\n')
.map(function(tr, i) {
return '<tr><td>' +
tr.replace(/,/g,'</td><td>') +
'</td></tr>';
})
.join('\n');
}
</script>
<table border="0" style='font-size:50%' id="A350"></table>
我无法在我的机器上重现该问题。你的代码对我来说工作得很好,至少在 chrome,
但是您可以尝试使用 fetch 而不是 XMLHttpRequest。都对我有用
看起来像下面这样
<script>
fetch('https://raw.githubusercontent.com/clintjb/A350-Tracking/main/flight_data_a350.csv'
).then((response) => {
return response.text();
}).then((text) => {
document.getElementById('A350').innerHTML = tbl(text);
})
function tbl(csv) {
return csv.split('\n')
.map(function (tr, i) {
return '<tr><td>' +
tr.replace(/,/g, '</td><td>') +
'</td></tr>';
})
.join('\n');
}
</script>
<table border="0" style='font-size:50%' id="A350"></table>
所以所有的解决方案(包括我的第一个提议)实际上都奏效了。最后的问题实际上是Jekyll网站上使用的模板中的一个奇怪的错误。
如果您直接进入该页面,它呈现良好,如果您刷新它呈现良好 - 只是通过菜单,这会导致呈现问题。
因此,我更改了方法并使用 GitHub 操作每天推送文件 - CSV 与您在同一回购中(例如像在 _data/my_file.csv 中一样)建站时可以访问数据
{{ site.data.my_csv }}
所以我一点儿也不是 JS 专家,但我想在我的 Jekyll 网站上将 CSV 渲染为 table - 我使用以下脚本来处理它。
唯一的问题是它似乎从来没有第一次加载 table,我需要在浏览器中单击刷新才能显示它 - 有人知道这可能是什么原因吗?
<script>
window.onload = function() {
with(new XMLHttpRequest()) {
onreadystatechange = cb;
open('GET', 'https://raw.githubusercontent.com/clintjb/A350-Tracking/main/flight_data_a350.csv', true);
responseType = 'text';
send();
}
}
function cb() {
if (this.readyState === 4) document.getElementById('A350')
.innerHTML = tbl(this.responseText);
}
function tbl(csv) {
return csv.split('\n')
.map(function(tr, i) {
return '<tr><td>' +
tr.replace(/,/g,'</td><td>') +
'</td></tr>';
})
.join('\n');
}
</script>
<table border="0" style='font-size:50%' id="A350"></table>
我无法在我的机器上重现该问题。你的代码对我来说工作得很好,至少在 chrome, 但是您可以尝试使用 fetch 而不是 XMLHttpRequest。都对我有用
看起来像下面这样
<script>
fetch('https://raw.githubusercontent.com/clintjb/A350-Tracking/main/flight_data_a350.csv'
).then((response) => {
return response.text();
}).then((text) => {
document.getElementById('A350').innerHTML = tbl(text);
})
function tbl(csv) {
return csv.split('\n')
.map(function (tr, i) {
return '<tr><td>' +
tr.replace(/,/g, '</td><td>') +
'</td></tr>';
})
.join('\n');
}
</script>
<table border="0" style='font-size:50%' id="A350"></table>
所以所有的解决方案(包括我的第一个提议)实际上都奏效了。最后的问题实际上是Jekyll网站上使用的模板中的一个奇怪的错误。
如果您直接进入该页面,它呈现良好,如果您刷新它呈现良好 - 只是通过菜单,这会导致呈现问题。
因此,我更改了方法并使用 GitHub 操作每天推送文件 - CSV 与您在同一回购中(例如像在 _data/my_file.csv 中一样)建站时可以访问数据
{{ site.data.my_csv }}