我有一个非常重 ajax 的网站,它基本上是一个 SPA,但我不会给它贴上标签,因为它没有遵循所有的准则。
我有一个商店,它位于页面上的一个 div 中,并通过 jquery ajax 和淘汰赛更新。我需要的最后一件事是能够从第三方网络服务下载 pdf。我可以使用以下方法下载 pdf
<form action="/Dashboard/DownloadPdf" method="POST" style="display:none;" id="ProductDownload" data-bind="with: ProductToDownload">
<input type="hidden" id="Name" name="Name" data-bind="value: Name"/>
<input type="hidden" id="FileName" name="FileName" data-bind="value: FileName"/>
<input type="hidden" id="Id" name="Id" data-bind="value: Id"/>
<input type="hidden" id="Date" name="Date" data-bind="value: Date"/>
<input type="hidden" id="Number" name="Number" data-bind="value: Number"/>
</form>
在提交表单之前,我使用淘汰赛来填充 ProductToDownload。
$('form').submit();
我想要做的是给用户一些指示,表明一个动作正在发生并且已经完成,例如在获取表单时抛出一个加载器。
我的问题在于能够知道 form.submit() 何时完成。
我怎么知道我的表单提交何时完成,以便我可以清理加载程序等。
下面也是我用来下载 pdf 的代码,如果有人能验证我做得正确,那就太好了。
[HttpPost]
public void DownloadPdf(Product product)
{
var asr = Services.GetProduct(Token, product);
Response.ClearHeaders();
Response.ClearContent();
Response.AppendHeader("Content-Disposition","attachment; filename=" + product.FileName);
Response.ContentType = "application/pdf";
Response.BinaryWrite(asr.Payload.Pdf);
Response.End();
}
请记住,我们不会在本地存储 PDF,我们会从其他服务请求它们。