[英]After download fire javascript
我有一个asp.net应用程序,试图在其中写出一个csv。 一旦对话框显示出来或之后没有任何区别,我只想显示一些消息,说明一切顺利。 我正在尝试触发一些JavaScript来简单地更改元素的样式以及一些测试以表明下载成功。
下载工作正常,这是我的操作方式,但也相信这是导致我的问题的原因:
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "inline; filename=myFile.csv");
Response.Charset = "";
Response.ContentType = "text/csv";
FileInfo fileToDownload = new FileInfo(filename);
Response.WriteFile(filename);
Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
Response.End();
System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "s_DisplayLongRunningQueryComplete", "DisplayLongRunningQueryComplete();", true);
如果我将注册启动脚本的最后一行移到其自己的按钮上,可以说我没有任何问题,并且工作正常。 我也曾尝试将其移至上述火灾之前,但没有运气。
任何人都有如何使这项工作的想法吗?
谢谢。
您有以下几个问题:
1-您正在下载文件,并在响应中尝试注入JavaScript代码以与文件缓冲区一起执行。 System.Web.UI.ScriptManager.RegisterStartupScript
将HTML脚本标记添加到您尝试执行的javascript响应中。
2- Response.End()
是另一个问题。 假设您的响应不是针对文件下载的(例如),则一旦调用此函数,将不会处理其他任何事情,因此不会调用任何Web资源。
解决方法:
您确实必须重组代码来解决此问题。 也许尝试以下方法:
调用Response.End后,您将无法发送任何内容。 基本上,它停止页面的执行,并且线程被中止。
如果要在下载文件后显示消息,可以使用jQuery File Download Plugin for Ajax 。
您可以在此处测试演示应用程序。
这是示例应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.