【发布时间】:2013-01-18 21:44:03
【问题描述】:
在我们的应用中,我们需要实现以下场景:
- 客户端发送请求
- 服务器处理请求并生成文件
- 服务器返回文件作为响应
- 客户端浏览器显示文件下载弹出对话框并允许用户下载文件
我们的应用程序是基于 ajax 的应用程序,因此我们发送 ajax 请求将非常简单方便(例如使用 jquery.ajax() 函数)。
但是在 googilng 之后,发现只有在使用非 ajax POST 请求时才可以下载文件(如this popular SO thread 中所述)。所以我们需要实现更丑更复杂的解决方案,需要构建带有嵌套隐藏字段的form的HTML结构。
谁能用简单的话解释一下为什么不能使用ajax请求来下载文件?这背后的机制是什么?
【问题讨论】:
-
这是因为通过 AJAX 检索到的所有内容都进入了 javascript“内存”。而且您不希望该文件位于 javascript 内存中,因此您最好的选择应该是 stackoverflow.com/questions/3502267/download-a-file-using-ajax(BalusC 的答案)
-
Wikipedia:
...retrieve data from, a server asynchronously without interfering with the display and behavior of the existing page.所以不会干扰页面,数据只会存储在JavaScript内存空间中。
标签: javascript ajax post download