AJAX没有打开附件

时间:2018-06-08 19:17:13

标签: jquery ajax django

我有一个返回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 :(得分:1)

实际上,最简单的方法是使用<form>包装按钮,在此表单的隐藏字段中设置请求参数,并将action属性设置为您的网址。然后,您可以完全删除JS代码,只需按下按钮即可提交表单。因此,当按下按钮时,表单将被提交,浏览器将正确处理响应并显示下载对话框。