php - jquery ajax调用后如何将文件输出到浏览器

标签 php jquery ajax header

我在网站上有一个指向 php 文件的链接,该文件在飞 Ant 上生成 native excel 文件,通过 header 将其直接输出到浏览器,供用户打开/保存。由于生成文件需要一些时间,我想使用 jQuery Ajax 进行调用,同时使用一些加载动画。

我唯一不确定的是如何在 Ajax 调用后将文件输出到浏览器?有可能吗?

最佳答案

(注意这是对@dmitry 回答的转述,但只是详细说明)

您遇到的问题是无法通过 AJAX 直接将文件返回给用户 - 浏览器必须使用正常的同步 HTTP 请求来请求文件。

要解决这个问题,您的 PHP 需要:

  1. 正常生成 Excel 文件。
  2. 不是将文件写回给用户,而是将其保存在服务器文件系统的某个位置(即使用 file_put_contents() 或类似方法)。
  3. 返回文件路径给用户。

您的 JS 在收到此响应后需要:

  1. 从 PHP 脚本中读取 Excel 文件路径。
  2. 使用 window.open() 在新的选项卡/窗口中打开 Excel 文件(或通过设置 location.href 在当前选项卡/窗口中重定向)。

关于php - jquery ajax调用后如何将文件输出到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7430315/

相关文章:

javascript - jQuery - 每个计数重置问题

JavaScript 堆大小随着 AJAX 调用而不断增加

javascript - .data() JQuery 返回未定义

php - Laravel 空白白屏 - Centos 7、NGINX 和 PHP7.1

php - Symfony @Assert\Valid 不起作用

php - 对 Codeigniter 登录进行过滤

php - 如何防止页面重新加载/刷新提交ajax调用表单并获取文本和上传的文件/图像?

php - 如何在 Yii 的过滤器中指定表名?

javascript - 复杂的连续滚动循环

javascript - 带有 iframe 的 jQuery 自定义内容滚动插件 - 可能是 CSS 问题