繁体   English   中英

获取href上的请求状态

[英]Get Request Status on 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

}

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

我认为,如果文件下载已经完成,我们就无法知道event 如果我是你,我会做这样的事情:

  1. 通过PHP打开文件并通过HTTP将其发送到客户端的浏览器
  2. 我会有一个像$_SESSION['lock'] = true;的变量$_SESSION['lock'] = true; 并在开始将流发送到输出之前设置它
  3. 文件下载完成后,我会通过$_SESSION['lock'] = false;解锁变量$_SESSION['lock'] = false;
  4. 在文件下载期间,我可以检查lock值以查看文件是否已完成。 让我们通过AJAX每2-5秒说一次。
  5. 当它完成时 - lockfalse ,我可以做任何需要,但我不知道如何显示进度条,甚至大约。

请注意,如果您不使用类似$_SESSION东西,则锁定机制根本不起作用,因为脚本每次都会作为一个新的运行,而不知道最近的变量等。

更新:

您可能想要使用$_SESSION['finished']而不是$_SESSION['lock'] ,这在理解源代码方面更有意义。

暂无
暂无

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

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