php - JQuery 和 PHP:是否可以通过 AJAX 调用下载文件?
问题描述
我有一个在表格中显示数据的网页,我想添加一个按钮,用户可以单击该按钮将表格下载为 Excel 文件。我使用 PHPExcel 制作 Excel 文件,在我真正开始下载文件之前,它似乎可以正常工作 - 浏览器似乎可以很好地生成文件,但实际上并没有下载完成的文件。
我确实在这里查看了这个问题:phpexcel to download,但我尝试了答案所说的,它似乎没有改变任何东西。
这是我的前端代码(“table.php”):
<script>
$("#export-to-excel").click(function() {
$.ajax({
type: "GET",
url: "table_create_excel.php",
data: {
action: "exportToExcel",
tableRows: rows
}
});
}
</script>
<img src='excel-icon.png' id="export-to-excel"/>
这是我的后端代码(“table_create_excel.php”):
require_once "PHPExcel.php";
$objPHPExcel = new PHPExcel();
// ...
// ... generate the excel document from the given data ...
// ...
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Table_Summary.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
有什么我遗漏的东西,如果我能把它放进去,会让我的浏览器下载文件吗?问题可能是因为我正在进行 AJAX 调用而不是直接链接到 PHP 页面吗?谢谢。
解决方案
事实证明我的怀疑是正确的,并且您不能使用 AJAX 下载文件。我所做的是摆脱了 JQuery 的“点击”事件,并将其替换为“导出到 Excel”图标周围的锚标记,该标记具有指向生成和下载 Excel 文件的 PHP 文件的链接以及足够的参数以允许PHP 代码重新查询数据库并重建我想要导出的表,而不是将表包含在发送的数据中。
推荐阅读
- android - 如何在 Android Worker 中完成 Kotlin Flow
- git - Mac中的Git碰撞路径
- windows - Unable to install Docker Desktop 3.0.0 onto Windows Server 2019 DataCenter
- java - 访问特定索引处的数组
- sql - 列的验证工作非常缓慢(SQL Server)
- jenkins - Jenkins,Gradle:如何将依赖关系报告发布到 Sonar Dashboard
- bash - 无法从文件中获取价值
- javascript - 机器人自动删除反应
- windows - 为什么 UWP 应用不搜索您在 PATH 中设置的任何目录?
- azure - url中的Powershell调用-restmethod变量