在页面加载上运行“长等待”脚本,使用AJAX检查是否已完成

时间:2012-10-01 15:16:15

标签: php ajax timer loading

我有一个网页,我正在嵌入一个脚本,可能需要10分钟来运行后端。

我已经尝试了许多不同版本的带有计时器的ajax脚本加载器。

我需要什么: 在页面加载时,我需要触发主要工作脚本才能运行。 此脚本的最后一行将在文件夹中创建一个唯一的文本文件,其中包含用户的文件名,以便在脚本完成后显示该文件。

然后,从页面加载也触发,将是一个AJAX函数,每10秒加载一个第二个脚本, 这个秒脚本非常小,并检查用户文件(来自上面的脚本)是否在指定的目录中。

如果文件还没有(脚本仍然有效),那么它会回显

<img src"../loading.gif">

如果文件现在在那里(脚本已经完成),那么它回显一个链接(或者可能是另一个页面的标题,我还没有决定)...

这意味着在页面加载时,主处理脚本启动,并触发ajax脚本(将立即显示加载图像),一旦主脚本执行完毕,加载图像将更改为链接(或者只是将你重新引导到另一页)

抱歉漫无目的,只想尽可能多地提供信息......

ps,我假设我需要一个简单的加载,一旦ajax函数调用主处理脚本,这样它在后台工作,或者主页面需要很长时间才能加载

我的最新尝试:

function MakeRequest()
{
  var xmlHttp = getXMLHttp();

  xmlHttp.onreadystatechange = function()
  {
    if(xmlHttp.readyState == 4)
    {
      HandleResponse(xmlHttp.responseText);
    }
  }

  xmlHttp.open("GET", "processing_script.php?user=<?php echo $_SESSION['user']; ?>", true);
  xmlHttp.send(null);
}

function HandleResponse(response)
{
  document.getElementById('ResponseDiv').innerHTML = response;
}

1 个答案:

答案 0 :(得分:1)

要每5秒加载一个文件,您可以使用setInterval函数每隔xy秒调用一次该函数。

您是否考虑使用jquery等javascript框架?它们提供了一些非常容易使用的ajax方法来简化整个过程。 “手动”处理ajax请求对我来说总是“痛苦的屁股”。