gpt4 book ai didi

javascript - 在 Javascript 中使用 Papa Parse 从远程 csv 获取行数

转载 作者:行者123 更新时间:2023-12-03 06:10:24 25 4
gpt4 key购买 nike

我有以下函数,可以从远程 csv 文件读取数据,并在将其显示在数据表上之前对其进行一些处理。

function loadGrid()
{
link='{{ url("thecsvfile") }}/'+$('#class-id').val();
Papa.parse(link, {
download: true,withCredentials: true,header:true,
step: function(results, parser) {
//.... process the data row by row
cleanDataForGrid(results.data);
},
complete:function()
{
table =$('#the-grid').DataTable({
responsive: true,
destroy: true,
'bProcessing': true,
paging: false,
searching: false,
info:false,
scrollCollapse:true,
'columnDefs': [{
'targets': 0,
'searchable':false,
'orderable':false,
'width':'1%',
'className': 'dt-body-center',
'render': function (data, type, full, meta){
return '<input type="checkbox" class="the_check">';
},

}],

});
updateDownloaded();
}
});

}

目前运行良好,问题是当 CSV 文件有很多行时,加载时间较长,有时浏览器会挂起或崩溃。如果文件超过 X 行,我们是否可以先获取行数,从而完全避免下载?如果我可以获得这样一个仅返回行数的实现。

function getRows()
{
var rowcount= Papa.parse(link, {download: false});
if(rowcount<50001) loadGrid();
}

有可能有这样的实现吗?

最佳答案

完全可以查询能够满足您需求的服务器端程序:返回 CSV 文件的行数。

示例:http://www.yoursite.com/handlers/csv/count?file=thecsvfile

您可以在 JavaScript 代码中初始化返回值的 View 。使用 php 和 zend 框架,您可以将返回值注入(inject) View 模型,并将其显示在 View 中。

<script type="text/javascript">
<!--
var maxcsvfileSize = 50001;
var thecsvfileSize = <?php echo $this->thecsvfileSize; ?>;

function loadGrid(thecsvfileSize){
// test the length of thecsvfile and do the job you need.
if (thecsvfileSize < maxcsvfileSize) {
// do the job
}
}

//-->
</script>

[编辑]

查看一下 Papi documentation ,您将有权使用流来处理大文件:

Papa.parse("http://example.com/big.csv", {
download: true,
step: function(row) {
console.log("Row:", row.data);
},
complete: function() {
console.log("All done!");
}
});

...这相对容易完成,并且 100% 响应您的问题和需求。

关于javascript - 在 Javascript 中使用 Papa Parse 从远程 csv 获取行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39343715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com