【发布时间】:2010-10-14 21:45:20
【问题描述】:
您可以使用 AJAX 从 Web 应用程序下载生成的 csv 文件吗?如果是这样,是否有人有任何可以指向我的参考?
编辑:对不起,我应该提到我正在使用 Prototype 的 Ajax.Request,我查看了 firebug 的响应工具,生成的 CSV 是响应,我只需要在生成后弹出保存文件选项即可通过 Ajax.Request
【问题讨论】:
标签: ajax prototypejs lowpro
您可以使用 AJAX 从 Web 应用程序下载生成的 csv 文件吗?如果是这样,是否有人有任何可以指向我的参考?
编辑:对不起,我应该提到我正在使用 Prototype 的 Ajax.Request,我查看了 firebug 的响应工具,生成的 CSV 是响应,我只需要在生成后弹出保存文件选项即可通过 Ajax.Request
【问题讨论】:
标签: ajax prototypejs lowpro
这是 Ajax 请求的一个已知限制,您需要使用 JS,例如:
window.location='download-csv.rb';
而不是使用 Ajax 请求。另一种方法是更改隐藏 iframe 的位置,但这有它自己的优点/缺点。
无论您发送什么 HTTP 标头,您都不会收到显示“文件保存”对话框的 Ajax 请求。
【讨论】:
根据您的最新编辑,要让您的 CSV 文件触发文件下载(而不是在浏览器中呈现),不需要 Ajax。
相反,解决方案是让您的后端系统在请求 CSV 文件时添加此 HTTP 标头:
Content-disposition: attachment; filename=<your_filename.csv>;
您在此处的实现取决于您使用的后端系统。如果您使用的是 Rails(正如您的用户名所暗示的那样),请从这里开始:
filename = 'your_filename.csv'
headers['Content-Type'] = 'text/plain'
headers['Content-Disposition'] = "attachment; filename=\"#{filename}\""
render :layout => false
【讨论】:
下载不是问题;您可以通过 XmlHttpRequest 下载您喜欢的任何数据。困难的部分是解析它。解析它有多种方法,从正则表达式到字符串索引。
【讨论】:
您可以使用“AJAX”来下载任何东西。有些人会说在这种情况下您不应该将其称为 AJAX,因为该术语专门用于下载 XML。但实际上,它只是一种无需重新加载页面即可将数据输入客户端的机制。如果您正在加载 HTML,它会被称为 AHAH,对于 CSV,我猜您会称它为 AHAC 或 AJAC? ..
【讨论】: