通过AJAX下载CSV

时间:2009-03-23 04:18:20

标签: ajax prototypejs lowpro

您可以使用AJAX从Web应用程序下载生成的csv文件吗?如果是这样的话,任何人都有任何我可以指向的参考吗?

编辑:对不起我应该提到我正在使用Prototype的Ajax.Request,我查看了firebug的响应工具,生成的CSV就是响应,我只需要在生成后弹出保存文件选项通过Ajax.Request

4 个答案:

答案 0 :(得分:4)

这是Ajax请求的已知限制,您需要使用JS:

window.location='download-csv.rb';

而不是使用Ajax请求。另一种方法是更改​​隐藏的Iframe的位置,但这有它自己的pro / con。

无论您发送什么HTTP标头,都不会收到显示“文件保存”对话框的Ajax请求。

答案 1 :(得分:1)

根据您的最新编辑,要使您的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

答案 2 :(得分:0)

下载不是问题;你可以通过XmlHttpRequest下载你喜欢的任何数据。困难的部分是解析它。有几种方法可以解析它,从正则表达式到字符串索引。

答案 3 :(得分:0)

您可以使用“AJAX”下载任何内容。有些人会说在这种情况下您不应该将其称为AJAX,因为该术语严格用于下载XML。但实际上它只是一种将数据导入客户端而无需重新加载页面的机制。如果您正在加载HTML,它将被称为AHAH,对于CSV,我猜您称之为AHAC或AJAC? ..