AJAX не открывает вложение - PullRequest
0 голосов
/ 08 июня 2018

У меня есть представление, которое возвращает HttpResponse:

file_name = 'rel_acao_{}.xlsx'.format(dt.now().strftime("%Y%m%d"))
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename={}'.format(file_name)

writer = pd.ExcelWriter(response)
df_1.to_excel(writer, sheet_name='Sheet1')
df_2.to_excel(writer, sheet_name='Sheet2')
writer.save()

return response

Это представление вызывается с помощью следующей кнопки:

<div>
    <button id="btn_Export" type="button" onclick="sendReport()">
        Export to Excel
    </button>
</div>

, которая, в свою очередь, вызывает следующую функцию:

// Dispatch
function sendReport(){
    $.ajax({
        url: "{% url 'report_action:report_action_csv' %}",
        type: 'POST',
        data: {
            'followup': JSON.stringify(followup),
            'report': JSON.stringify(report)
        }
    });
}

Как видно здесь, - это файл где-то в этом подвешенном состоянии данных: Network data

Почему я не могу загрузитьфайл?Что я делаю не так?

1 Ответ

0 голосов
/ 08 июня 2018

На самом деле самый простой способ для вас - обернуть кнопку с помощью <form>, установить параметры запроса в скрытых полях этой формы и установить атрибут action для вашего URL.Затем вы можете полностью удалить свой JS-код и просто нажать кнопку для отправки формы.Поэтому при нажатии кнопки форма будет отправлена, и браузер правильно обработает ответ и покажет диалоговое окно загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...