用户单击链接后显示busy gif

时间:2009-10-19 20:16:19

标签: asp.net jquery http

我有一个很大的Excel文档,当用户点击下载链接时会生成该文档。单击下载链接时,浏览器会弹出标准的打开保存取消对话框。问题是等待时间可能很长,例如对话框出现前15秒或更长时间。我想在请求正在进行时显示忙碌的gif。我怎么能做到这一点?

我很确定我可以轻松地使用jQuery显示gif,但我不确定如何在新文档(excel doc)加载完成后停止/隐藏忙指示符。是否有可以附加处理程序的javascript事件?

2 个答案:

答案 0 :(得分:2)

这里的问题是点击链接会触发另一个与第一个请求无关的请求。您可以拥有处理下载请求更新某种会话数据的代码,然后轮询链接页面上的一些Ajax以确定请求处理程序何时处于提供数据的过程中下载。

或者,您可以在一段合理的时间(例如30秒)之后让它超时,并且可能会提供解释。然后,这可能会转变为几种状态:

"Click here to download the super-duper PDF of awesomeness!"
"Please wait, generating a whole dollop of fonty goodness..."
"It may take some time to bundle all that uber-data into a download...if nothing's happening, maybe you want to try again?"

这似乎是Google Mail在检测超时或类似问题时采取的方法。

答案 1 :(得分:2)

另一个选项是临时文件方法:Is there a way to detect the start of a download in JavaScript?

基本上:

  1. 用户点击下载链接/按钮
  2. 发送AJAX请求以创建Excel文档。显示“忙碌”指示灯。
  3. 创建Excel文档并将其保存到服务器上的临时文件中。发送的响应包含标识文件的唯一ID。
  4. AJAX响应在客户端处理。隐藏“忙碌”指示灯。 window.location更改为'download.aspx?id=###',提示用户保存文件。