允许用户将html表本地保存为csv、PHP和javascript

允许用户将html表本地保存为csv、PHP和javascript,php,ajax,csv,download,Php,Ajax,Csv,Download,编辑: 问题:我在一个页面上有一个动态生成的html表,我希望用户能够单击按钮并下载到他们的计算机上 设置:名为main.php的文件,其中包含所有处理、变量、数组等=>将所有数据馈送到网页中,其中一个是table.php。此页面动态地将main.php中的一个数组回显到html表格中=>table.php中的链接到tblProcess.php,并带有输出文件供下载的标题 我现在在tblProcess.php文件中的代码可以正常工作 header("Content-Type: text/csv"

编辑:

问题:我在一个页面上有一个动态生成的html表,我希望用户能够单击按钮并下载到他们的计算机上

设置:名为main.php的文件,其中包含所有处理、变量、数组等=>将所有数据馈送到网页中,其中一个是table.php。此页面动态地将main.php中的一个数组回显到html表格中=>table.php中的链接到tblProcess.php,并带有输出文件供下载的标题

我现在在tblProcess.php文件中的代码可以正常工作

header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=$filename");
// Disable caching
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1
header("Pragma: no-cache"); // HTTP 1.0
header("Expires: 0"); // Proxies

outputCSV(array(
  array("name 1", "age 1", "city 1"),
  array("name 2", "age 2", "city 2"),
  array("name 3", "age 3", "city 3")
));

function outputCSV($data) {
   $output = fopen("php://output", "w");
   foreach ($data as $row) {
       fputcsv($output, $row); // here you can change delimiter/enclosure
   }
   fclose($output);
}
在table.php中链接到tblProcess.php

<a id="dl" href="downloadProcess.php">Download</a>
使用文件中的虚拟数据数组,当您单击链接时,所有操作都按预期进行,它会要求您下载文件名.csv,其中包含虚拟数据,因此我知道代码没有问题

我面临的最大问题是如何将我的html表从table.php获取到这个文件中。无论我如何尝试,通过ajax发布和通过$\u POST检索都没有任何效果,但我不知道如何将此表放入此文件中

表在table.php中从main.php中包含的数组动态回显的方式

  echo "<div id='assnTable'><table id='assign' border='1px'>";
  echo "<thead><th>uniqueID</th><th>Name</th><th>FundCode</th><th>Amount $</th><th>FundCode</th><th>Amount $</th><th>Totals:</th></thead>";
  $count = 1;
  echo "<tbody>";
  foreach($assn as $unID => $asnm) {
    oddClass($count);
    echo "<td>{$unID}</td>";
    echo "<td>";
    echo $stu[$unID]['USER_LAST_NAME'].", ".$stu[$unID]['USER_FIRST_NAME'];
    echo "</td>";
      foreach($asnm as $fund => $amt) {
        echo "<td>{$fund}</td>";
        echo "<td class='sumCell'>{$amt}</td>";
      }
    $count++;
    echo "</tr>";
  }
  echo "<tr class='totalRow'><td></td><td></td><td></td><td></td><td></td><td id='last'><b>Total:</b></td></tr>";
  echo "</tbody></table></div>";
最后,我的大问题是,如何将这个html表放入下载该文件的处理文件中?我可以将它清理并准备成一个数组或任何我需要的东西,我只是不知道如何将它放入另一个文件中。尝试将ajax帖子链接到单击下载链接会禁用其下载部分。
谢谢

因为它是一个Ajax调用,而不是一个常规的表单提交,所以由于您没有在success函数中使用它,所以响应将丢失。只需将其设置为一个普通表单submit,由于它是一个文件下载,因此不应更改页面。另请参阅@developerwjk如何将我的html表设置为一个可以提交适当部分的表单?