繁体   English   中英

下载后的火javascript

[英]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资源。

解决方法:

您确实必须重组代码来解决此问题。 也许尝试以下方法:

  • 更改代码以下载文件,而不调用脚本。
  • 通过jQuery ajax从客户端调用下载。
  • 成功下载后,请致电您javascript代码。

调用Response.End后,您将无法发送任何内容。 基本上,它停止页面的执行,并且线程被中止。

如果要在下载文件后显示消息,可以使用jQuery File Download Plugin for Ajax

您可以在此处测试演示应用程序。

是示例应用程序。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM