下载后点火javascript

时间:2014-04-03 18:15:06

标签: c# javascript jquery asp.net

我有一个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);

如果我将我注册启动脚本的最后一行移动到其自己的按钮,我可以说我没有任何问题,而且工作正常。我已经尝试过将此移动到上述火灾之前,没有运气。

任何人都有任何想法如何使这项工作?

感谢。

2 个答案:

答案 0 :(得分:1)

你有几个问题:

1-您正在下载文件,并且在您的响应中,您尝试注入javascript代码以与文件缓冲区一起执行。 System.Web.UI.ScriptManager.RegisterStartupScript使用您尝试执行的javascript将HTML脚本标记添加到响应中。

2- Response.End()是另一个问题。假设您的响应不是用于文件下载(例如),一旦调用此函数,就不会处理任何其他内容,因此不会调用任何Web资源。

如何解决:

您必须重新构建代码才能解决此问题。也许尝试以下方法:

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

答案 1 :(得分:1)

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

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

您可以测试演示应用程序Here

Here是示例应用程序。

enter image description here