Jas*_*pel 3 javascript python ajax flask
用户按下form页面上的按钮:
<form id="form">
<input type="button" id="export" value="Export"/>
</form>
Run Code Online (Sandbox Code Playgroud)
单击该按钮后,将进行以下Ajax调用:
ajaxCall('/export', {}, callback_export, 'get');
Run Code Online (Sandbox Code Playgroud)
哪里
function ajaxCall(url, params, callback, type) {
if (validate()) {
var request;
request = $.ajax({
url: url,
type: type,
data: params
});
}
request.done(function (response, textStatus, jqXHR){
callback(response);
});
}
Run Code Online (Sandbox Code Playgroud)
Flask应用程序看起来像这样:
@app.route('/export')
def export():
xl_file= '/absolute/path/to/excel/file.xlsx'
return send_file(xl_file, as_attachment=True, mimetype='application/vnd.ms-excel')
Run Code Online (Sandbox Code Playgroud)
文件的文件内容将返回到浏览器(请参见下图),但不会将文件本身作为附件返回.
问题是,回调需要什么来接受作为文件附件的响应?或者,需要进行哪些修改?
(是的,我搜索并阅读了SE上的许多帖子.大多数讨论使用该form.submit()方法但不提供详细信息.我希望避免使用,form.submit()因为其中的其他元素#form无法提交.)

小智 6
你真的需要使用ajax吗?我发现ajax是一个用烧瓶下载excel文件的工作......但它对我不起作用.我只需在'rb'模式下打开excel文件,并将mimetype更改为在windows中识别为excel文件.你的Flast只需要调用getPlotExcel().
@app.route("/getPlotExcel")
def getPlotExcel():
excelDownload = open("sample.xlsx",'rb').read()
return Response(
excelDownload,
mimetype="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
headers={"Content-disposition":
"attachment; filename=sample.xlsx"})
Run Code Online (Sandbox Code Playgroud)