这样设置是否可以在PHP中的ajax调用上启用文件下载?


Is this set up possible to enable file download on a ajax call in PHP?

我绝不是一个网页开发人员。我在GWT上做过一些工作。我们以前在那里有这样的设备。因为所有的东西都是ajax的,每次我们进行服务器RPC调用时,我们都会显示一个进度条,当响应返回时,我们会在RPC/ajax的回调中关闭它。

现在我在一个工具上工作,它试图在PHP中做到这一点(我仍在学习)。我的设置是这样的

1:有一个html表单,里面有几个字段。这里我需要一个文件上传选项,但是为了举例,我们假设有两个文本字段。

2:当用户提交表单时。我想做一个post ajax调用说test.php,同时,显示一个进度条出现(基本上阻塞了整个页面,但不刷新页面也)。当ajax响应出现时,我将关闭进度条。

3:现在,如果服务器返回一些文本,很容易处理,我可以用document.getElementById在ajax回调中处理它。但在我的例子中,我想做一些处理服务器端post参数,创建一个文本文件并返回它。然后回到客户端,关闭进度。

我写了一个示例脚本,通过设置标题

返回一个文件

header('Content-Description: File Transfer');
标题("内容类型:文本/csv");
标题("附加项:附件;文件名= '。文件)美元;

所以这个php文件独立工作很好,当我在浏览器中打开它时,它抛出一个下载链接。当我尝试通过ajax请求调用它时,它不返回任何东西。

谁能告诉我这种方法是否不正确?
<script>
    window.open("filedownload.php, '_self', false);
</script>

将提示用户下载文件而不导航到新页面。

浏览器将处理下载进度显示。这是用户将会熟悉的体验。

如果您希望在ajax请求完成时下载该文件,请将上述代码添加到XMLHttpRequest回调