2014-11-01 95 views
0

我想通過AJAX POST下載表單提交的excel文件,但是當使用舞者send_file方法時,我沒有收到提示保存文件。下載Dancer中的excel文件 - jQuery AJAX

請參閱以下內容:

路線:

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

做瀏覽器不是爲節省Ajax請求顯示彈出式的唯一的事? – a7omiton 2014-11-02 14:21:45

+0

^是這樣的情況。在這種情況下將不得不重新調整我的請求。 – a7omiton 2014-11-02 14:31:06

回答

0

瀏覽器不會,如果你通過AJAX發送/接收文件的內容提示保存對話框,至少這是我學到了什麼(除非你能在AJAX成功響應做些什麼請求)。

這意味着做的是重定向到另一個網址