我在网站上有一个指向 php 文件的链接,该文件在飞 Ant 上生成 native excel 文件,通过 header 将其直接输出到浏览器,供用户打开/保存。由于生成文件需要一些时间,我想使用 jQuery Ajax 进行调用,同时使用一些加载动画。
我唯一不确定的是如何在 Ajax 调用后将文件输出到浏览器?有可能吗?
最佳答案
(注意这是对@dmitry 回答的转述,但只是详细说明)
您遇到的问题是无法通过 AJAX 直接将文件返回给用户 - 浏览器必须使用正常的同步 HTTP 请求来请求文件。
要解决这个问题,您的 PHP 需要:
- 正常生成 Excel 文件。
- 不是将文件写回给用户,而是将其保存在服务器文件系统的某个位置(即使用
file_put_contents()
或类似方法)。 - 返回文件路径给用户。
您的 JS 在收到此响应后需要:
- 从 PHP 脚本中读取 Excel 文件路径。
- 使用
window.open()
在新的选项卡/窗口中打开 Excel 文件(或通过设置location.href
在当前选项卡/窗口中重定向)。
关于php - jquery ajax调用后如何将文件输出到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7430315/