我想通过AJAX POST在表单提交上下载excel文件,但是在使用Dancers send_file
方法时,我没有收到保存文件的提示。
请参阅以下内容:
路线:
post '/:date' => sub {
my $report_date = param('date');
my $data = param('stuff');
my $rep = $report->build($report_date, $data);
return send_file("reports/$rep", content_type => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
};
该路由中的build
方法一旦创建就返回文件名。 AJAX请求如下:
$('#report').submit(function(event){
event.preventDefault();
$.ajax({
'url': $(this).attr('action'),
'type': 'POST',
'data': {stuff: ...},
'success': function(res){
console.log(res);
}
});
上面的console.log没有返回任何内容,但是我得到的响应似乎没问题,包含Excel文件的内容,但没有提示:
Connection:Keep-Alive
Content-Disposition:attachment; filename="10-2014_1414869186.xlsx"
Content-Length:7161
Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Date:Sat, 01 Nov 2014 19:13:06 GMT
Keep-Alive:timeout=5, max=100
我是否需要在AJAX的成功响应中做些什么?如果是这样,我不确定是什么。
非常感谢帮助
答案 0 :(得分:0)
如果您通过AJAX发送/接收文件内容,浏览器不会提示保存对话框,至少是我发现的内容(除非您可以在AJAX的成功响应中执行某些操作)请求)。
这意味着唯一要做的就是重定向到另一个网址