我有一个生成HTML表格的PHP页面。在页面底部,您可以单击“提交”按钮,表中的数据将发送到名为Table2CSV(link here)的jquery脚本,该脚本获取数据,并提交到另一个PHP脚本以进行CSV导出。
最终,所有行动都发生在这里:
<form action="getCSV.php" method ="post" >
<input type="hidden" name="csv_text" id="csv_text">
<input type="submit" value="Get CSV File"
onclick="getCSVData()"
</form>
<script type="text/javascript">
function getCSVData(){
var csv_value=$('#example2').table2CSV({delivery:'value'});
$("#csv_text").val(csv_value);
}
</script>
我想要做的是生成csv脚本,而不必将html表输出到屏幕上(通过链接点击另一页)。
我认为我最终需要简单地更改上面的javascript函数,在页面加载时调用getCSVdata,然后运行getcsv.php但不确定如何完成,因为我对JS不是很熟悉。
有什么建议吗?
答案 0 :(得分:1)
在不查看table2CSV函数的情况下,我假设它需要一个HTML表元素来从中提取CSV数据。这意味着如果您需要使用此脚本,必须以这种或那种方式生成HTML表的代码。
最简单的解决方法是使用display:hidden set在div中创建表。这样table2CSV函数仍然可以访问表中的数据,但用户将不会在页面上看到它。
除此之外,您当然可以编写自己的服务器端脚本,将通常在HTML表格中返回的数据解析为CSV文件。
您在这里看到的问题是数据在服务器上,被发送到浏览器,然后被JS抓取以提交给服务器再次进行解析。如果服务器不依赖于客户端来解析数据或者客户端能够自己解析数据,那么事情会更直接。这两个选项绝对可以,但需要编写自己的CSV文件创建脚本。
编辑:请阅读上面的评论。如果您想从一开始就使用CSV文件,则必须在初始化DOM后调用getCSVData()。假设您没有从图像中提取任何数据(以异步方式加载),您可以:
$(document).ready(function() { getCSVData(); });
只要页面准备好显示,就会触发您的CSV脚本,无需额外点击即可供用户使用。