知道表单提交何时完成
Know when Form submit finishes
我有一个非常ajax的网站,它基本上是一个SPA,但我不会标记它,因为它不遵循所有准则。
我有一个商店,它驻留在页面上的div中,并通过jquery ajax和KNOCKOUT进行更新。我需要的最后一件事是从第三方网络服务下载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>
在提交表单之前,我使用挖空来填充产品下载。
$('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,而是从其他服务请求它们。
Cory 在评论中的链接是一个很好的解决方案!我不得不对其进行一些调整,因为我的调用已经期望一个复杂的类型,并且我无法传递任何其他参数。
function Download() {
$('.storeView').before($('#Loading').html()); //Put up loading
var attempts = 20;
var cookieId = vm.ProductToDownload().FileName; // This name is being sent in the parameters
var downloadTimer = setInterval(function() {
var token = $.cookie(cookieId); // I used the jquery.cookie.js plugin to clean things up
if (token || attempts === 0) {
$('.k-loading-mask').remove();
clearInterval(downloadTimer);
$.removeCookie(cookieId);
}
attempts--;
}, 1000);
$('form').submit();
}
然后在我的服务器上
public ActionResult Download(Product product)
{
.....
System.Web.HttpContext.Current.Response.Cookies.Add(new HttpCookie(product.FileName, product.FileName));
.....
}
相关文章:
- HTML表单提交时未执行外部函数
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 将图像上传ajax与表单提交ajax相结合
- Javascript无法处理表单提交
- 如何在我的情况下禁用表单提交
- 加载后的页面与ajax表单提交不起作用
- angularjs-控制器在表单提交时未调用
- 禁用带有字符白名单的表单提交
- 如何使用Google Analytics跟踪表单提交
- 使用javascript将表单提交到iframe目标中
- e.preventDefault在表单提交时被忽略
- AngularJS JQuery Ajax表单提交等效
- JavaScript表单提交帮助
- PHP表单提交和重定向
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- setTimeOut AFTER jQuery表单提交
- 从函数中选择要触发表单提交的正确元素
- 知道表单提交何时完成
- 对于不加载页面而是提供文件的表单,如何检测表单提交何时完成?
- 在jQuery修改完表单中的值之前提交表单