我们正在构建一个分析应用程序。这将需要用户等待 30 秒,同时我们从另一个来源获取数据并在将其显示给用户之前进行一些计算。
有什么方法可以在后台获取数据时向用户显示等待页面,而不是在获取数据时让页面加载 30 秒。
任何人都可以阐明如何做到这一点吗?
我们正在构建一个分析应用程序。这将需要用户等待 30 秒,同时我们从另一个来源获取数据并在将其显示给用户之前进行一些计算。
有什么方法可以在后台获取数据时向用户显示等待页面,而不是在获取数据时让页面加载 30 秒。
任何人都可以阐明如何做到这一点吗?
注意:对于灯箱,您必须包含灯箱 js
<script>
function onload_wating()
{
var syncronize_target=SITE_URL+'your_controllername/action_timer/';
$.lightbox(syncronize_target, {
width : 450,
height : 260,
'modal' : true,
'onOpen' : function() {
$(".jquery-lightbox-button-close").css({"visibility":"hidden","display":"none"});
}
});
}
onload_wating();
<script>
action_timer.ctp
注意:对于倒计时,你必须包括 jquery countdown -> http://keith-wood.name/countdown.html
<script>
$(function () {
$('#syncronize_header_timer').countdown(
{
until:+50,
format: 'MS',
onExpiry: ltliftOff
});
});
function ltliftOff() {
$.lightbox().close();
}
<script>
<div id="syncronize_header_timer" ></div>
===========================================
在 onload_wating() 上面这个函数打开灯箱并对你的控制器操作进行 ajax 查询并打开 action_timer.ctp
在 action_timer.ctp 中,我们使用倒数计时器。此计时器计数到 50,然后自动关闭。
在这 50 秒之间,您可以从数据库中检索您的数据。
一种方法是使用 AJAX 使用 HTTP GET 请求轮询服务器上的页面。
您可以使用数据库甚至更好的APC
编辑:
由于我们不是在这里讨论文件上传,因此 Session 可能是比 APC_UPLOAD_PROGRESS 更好的选择。会话提供每个用户的存储,这在这里应该是理想的,并且无论如何都可以由不同的存储(如 APC)支持。