【发布时间】:2017-09-30 00:20:15
【问题描述】:
我有一个返回文件的后端 API 方法(ASP.NET MVC):
[HttpPost]
public ActionResult GenerateReport(string param1, string param2)
{
try
{
string fn = SomeMethodThatGenerateAnExcelFileAndReturnItsFullPath(param1, param2);
return File(fn, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", Path.GetFileName(fn));
}
catch (Exception e)
{
log.Error(e);
throw;
}
}
我在前端有一个表单:
<form id="genForm" action="@Url.Action("GenerateReport", "Report")" method="POST">
<div class="card border-primary">
<div class="card-header">Report parameters</div>
<div class="card-body">
<div class="dx-fieldset">
<!-- inputs and params -->
<div class="dx-field">
<div class="dx-field-label"></div>
<button class="dx-field-value" id="btn-generate"></button>
</div>
</div>
</div>
</div>
</form>
还有一个提交表单的 javascript 事件:
<script type="text/javascript">
$("#btn-generate").click(function() {
// some other modifications
$("#genForm").submit();
})
</script>
使用此代码,当我单击生成按钮时,它会向服务器发出请求(页面正在刷新)并下载文件(下载完成后页面停止刷新)。发布和下载时浏览器正在加载,但页面的 DOM 之后没有改变。
我的问题是,由于 DOM 没有改变,如何捕获和处理“提交后”事件(实际上是在下载完成时)。
谢谢。
【问题讨论】:
标签: javascript jquery html asp.net-mvc