Jquery加载屏幕通过PHP覆盖大型mysql查询? 我正处于我的客户端的报告工具的中间,如果X天的话,基本上可以重新生成报告。
问题是这些报告是用PHP重建的,其中一些可能相当大,这意味着加载时间为20-40秒 目前,它只是在执行查询时挂起页面 然而,我想做的是在查询开始之前在页面中放置某种jquery加载覆盖,然后在查询完成时重定向到另一个页面(在那里将显示结果) 我认为只要我在运行查询之前将html加载到页面中,加载屏幕就会显示出来,然后一旦查询完成,我就可以再放置一点html来对另一个页面进行元刷新(显然,头重定向是不可能的,因为头已经被发送了) 如果这是正确的,有人能推荐任何基于jquery的半体面加载插件吗Jquery加载屏幕通过PHP覆盖大型mysql查询? 我正处于我的客户端的报告工具的中间,如果X天的话,基本上可以重新生成报告。,php,jquery,mysql,loading,large-query,Php,Jquery,Mysql,Loading,Large Query,问题是这些报告是用PHP重建的,其中一些可能相当大,这意味着加载时间为20-40秒 目前,它只是在执行查询时挂起页面 然而,我想做的是在查询开始之前在页面中放置某种jquery加载覆盖,然后在查询完成时重定向到另一个页面(在那里将显示结果) 我认为只要我在运行查询之前将html加载到页面中,加载屏幕就会显示出来,然后一旦查询完成,我就可以再放置一点html来对另一个页面进行元刷新(显然,头重定向是不可能的,因为头已经被发送了) 如果这是正确的,有人能推荐任何基于jquery的半体面加载插件吗 非
非常感谢您应该使用PHP函数flush()查看屏幕的刷新输出。它会给用户一个指示,说明实际发生了什么事情。有很多教程和代码片段向您展示了如何使用flush()设置JS/JQuery进度条。一个例子:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<title>Progress Bar</title>
</head>
<body>
<!-- Progress bar holder -->
<div id="progress" style="width:500px;border:1px solid #ccc;"></div>
<!-- Progress information -->
<div id="information" style="width"></div>
<?php
// Total processes
$total = 10;
// Loop through process
for($i=1; $i<=$total; $i++){
// Calculate the percentation
$percent = intval($i/$total * 100)."%";
// Javascript for updating the progress bar and information
echo '<script language="javascript">
document.getElementById("progress").innerHTML="<div style=\"width:'.$percent.';background-color:#ddd;\"> </div>";
document.getElementById("information").innerHTML="'.$i.' row(s) processed.";
</script>';
// This is for the buffer achieve the minimum size in order to flush data
echo str_repeat(' ',1024*64);
// Send output to browser immediately
flush();
// Sleep one second so we can see the delay
sleep(1);
}
// Tell user that the process is completed
echo '<script language="javascript">document.getElementById("information").innerHTML="Process completed"</script>';
?>
</body>
</html>
进度条
不太清楚,你说的写作是什么意思
我认为只要我在运行查询之前将html加载到页面中,加载屏幕就会显示出来,然后一旦查询完成,我就可以再放置一点html来对另一个页面进行元刷新(显然,头重定向是不可能的,因为头已经被发送了)
但让我告诉你,我们之前做了什么:
通过单击耗时XLS导出的导出按钮,将显示模式覆盖,并发送导出请求。从那一刻起,JS一直在寻找具有特定名称的cookie。在服务器端生成导出,并在完成后随XLS数据一起发送cookie。JS识别了发送的cookie并隐藏了覆盖
希望这能有所帮助。我强烈建议不要按照您建议的方式来做,也不要看ajax。这是你建议的一种老式方法,你不能保证不同浏览器之间的行为。好的观点。大概我可以让一个加载器显示,直到ajax页面显示,然后它会说类似“报告重建,重定向到结果”。我们肯定会调查,因为这可能是一个更可靠的选择。谢谢理想情况下,您将通过ajax调用获得报告,因此您将显示加载程序,构建并下载报告,将其写入页面,然后删除加载程序。如果您可以点击一个已经生成并显示报告的页面,那么您就差不多完成了。这可能只需要几行代码就可以实现。