您可以使用AJAX从Web应用程序下载生成的csv文件吗?如果是这样的话,任何人都有任何我可以指向的参考吗?
编辑:对不起我应该提到我正在使用Prototype的Ajax.Request,我查看了firebug的响应工具,生成的CSV就是响应,我只需要在生成后弹出保存文件选项通过Ajax.Request
答案 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? ..