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

Cab*_*ero 5 php ajax jquery header

我在网站上有一个链接到一个php文件,它可以在飞行中生成本机excel文件,通过标题直接将它输出到浏览器,供用户打开/保存.由于生成文件需要一些时间,因此我想使用jQuery Ajax进行调用并使用一些加载动画.

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

Jim*_*ien 3

注:这是@dmitry 答案的释义,但只是详细说明)

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

为了解决这个问题,你的 PHP 需要:

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

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

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