我在网站上有一个链接到php文件的链接,该文件在飞行中生成本机excel文件,通过标题直接将其输出到浏览器,供用户打开/保存。由于生成文件需要一些时间,因此我想使用jQuery Ajax进行调用并使用一些加载动画。
我唯一不确定如何做的是在Ajax调用后如何将文件输出到浏览器中?它甚至可能吗?
答案 0 :(得分:3)
( N.B。这是对@dmitry的答案的解释,但刚刚详细阐述)
您遇到的问题是无法通过AJAX直接将文件返回给用户 - 浏览器必须使用正常的同步HTTP请求来请求文件。
要解决此问题,您的PHP需要:
file_put_contents()
或类似文件)。您的JS在收到此回复后将需要:
window.open()
在新标签/窗口中打开Excel文件(或通过设置location.href
在当前标签/窗口中重定向)。答案 1 :(得分:1)
我认为你可以制作一个技巧:在Ajax响应中生成文件并返回生成文件的路径,然后调用
window.location = fileUrl
还有iframe Ajax的一些技术
答案 2 :(得分:0)
为什么不在加载生成excel文件的实际php文件的地方使用iframe?这样,在生成文件时,您将不会阻止UI,浏览器将触发下载对话框。
您无法通过javascript发送文件,至少不会强制浏览器打开下载对话框。