获取href上的请求状态

时间:2012-09-17 14:14:20

标签: javascript href

我正在使用href链接从服务器下载文件。我想在完全从服务器下载文件后做一些活动。与XMLHTTP一样,我可以在href上设置一些回调函数,该函数将在完成请求时调用。

我的代码就像这样

///link to download report
<div class='report-download'><a href='' id='downloadreq'></a></div>
$("#report-download").click(OnClick);

 ///onlick function
functon OnClick()
{
  ///start progress bar
  $("#downloadreq").attr("href","8001.html?data=dowloadreport");
  //stop progress bar

}

我想在下载时显示进度条,我有代码来启动和停止进度条窗口。但是当我插入代码来停止进度条时,它会在实际下载完成之前执行并且进度条消失。如何确定报告下载已完成(或)是否可以确定下载已完成。报告下载所需的时间将取决于要下载的记录数。所以我不能等待默认时间段并停止进度条。

1 个答案:

答案 0 :(得分:2)

我认为没有像event那样知道文件下载是否已经完成。如果我是你,我会做这样的事情:

  1. 通过PHP打开文件,并通过HTTP
  2. 将其发送到客户端的浏览器
  3. 我会有一个像$_SESSION['lock'] = true;这样的变量,并会在开始将流发送到输出之前设置它
  4. 文件下载完成后,我会通过$_SESSION['lock'] = false;
  5. 解锁变量
  6. 在文件下载期间,我可以检查lock值以查看文件是否已完成。让我们通过AJAX每次2-5秒。
  7. 当它完成时,lockfalse,我可以做任何需要,但我不知道如何显示进度条,甚至大约。
  8. 请注意,如果您不使用类似$_SESSION的内容,则锁定机制根本不起作用,因为脚本每次都会作为一个新的运行,而不知道最近的变量,等

    <强>更新

    在理解源代码方面,您可能希望使用$_SESSION['finished']代替$_SESSION['lock'],这会更有意义。