在Dancer中下载excel文件 - jQuery AJAX

时间:2014-11-01 19:15:53

标签: ajax dancer

我想通过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的成功响应中做些什么?如果是这样,我不确定是什么。

非常感谢帮助

1 个答案:

答案 0 :(得分:0)

如果您通过AJAX发送/接收文件内容,浏览器不会提示保存对话框,至少是我发现的内容(除非您可以在AJAX的成功响应中执行某些操作)请求)。

这意味着唯一要做的就是重定向到另一个网址