Скачать файл Excel в Dancer - jQuery AJAX

Я хочу загрузить файл Excel при отправке формы через AJAX POST, однако я не получаю приглашения сохранить файл при использовании метода 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? Если так, то я не знаю, что именно.

Был бы признателен за помощь


person a7omiton    schedule 01.11.2014    source источник
comment
Браузеры не отображают всплывающее окно для сохранения по запросу ajax?   -  person a7omiton    schedule 02.11.2014
comment
^ Ага, это так. в этом случае придется реструктурировать мой запрос.   -  person a7omiton    schedule 02.11.2014


Ответы (1)


Браузеры не будут запрашивать диалоговое окно сохранения, если вы отправляете / получаете содержимое файла через AJAX, по крайней мере, то, что я нашел (если вы не можете что-то сделать в ответе об успешном выполнении в запросе AJAX).

Это означает, что единственное, что нужно сделать, - это перенаправить на другой URL-адрес.

person a7omiton    schedule 02.11.2014