我绝不是一个网页开发人员。我在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
回调