Javascript 获取href上的请求状态

Javascript 获取href上的请求状态,javascript,href,Javascript,Href,我正在使用href链接从服务器下载文件。我想在文件完全从服务器下载后做一些活动。像XMLHTTP一样,我可以在href上设置一些回调函数,在请求完成时调用该函数 我的代码是这样的 ///link to download report <div class='report-download'><a href='' id='downloadreq'></a></div> $("#report-download").click(OnClick); /

我正在使用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

}
///下载报告的链接
$(“#报告下载”)。单击(OnClick);
///onlick函数
functon OnClick()
{
///启动进度条
$(“#downloadreq”).attr(“href”,“8001.html?data=dowloadreport”);
//停止进度条
}

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

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

  • 通过PHP打开文件,并通过HTTP将其发送到客户端浏览器
  • 我会有一个变量,比如
    $\u SESSION['lock']=true
    并将在开始将流发送到输出之前进行设置
  • 文件下载完成后,我将通过
    $\u SESSION['lock']=false解锁变量
  • 在文件下载期间,我可以检查
    lock
    值,查看文件是否已完成。假设通过AJAX每2-5秒一次
  • 当它完成时-
    lock
    false
    ,我可以做任何需要的事情,但我不知道如何显示进度条,即使是大约
  • 请注意,如果不使用
    $\u会话
    ,锁定机制将根本不起作用,因为每次脚本都将作为新脚本运行,而不知道最近的变量等

    更新:


    您可能希望使用
    $\u SESSION['finished']
    而不是
    $\u SESSION['lock']
    ,这在理解源代码方面更有意义。

    谢谢您的回复。我们的服务器是一个支持HTTP而不支持PHP的小型服务器应用程序。这是嵌入式应用程序还是服务器?你能告诉我你的服务器的名称,看看它支持什么吗?(可能它应该支持服务器端的一些东西,比如CGI…)感谢您对响应的兴趣。但很抱歉,老板,这是一个完全依赖我们自己开发的服务器。只需监听一个端口,为来自浏览器的页面请求提供服务,并处理来自客户端的其他请求。