重定向到另一个页面。如何显示倒计时?

时间:2012-07-20 16:40:52

标签: codeigniter

我只是想知道以下是否可行: 我对JQuery一无所知,但我不知道如何制作自己的javascripts。 当用户登录我的网站时,他们会看到一个“登录已完成”的页面。 根据那句话,我想得到一个句子,倒数秒,直到它们被重定向。有一种简单的方法可以做到这一点吗?

我已经有倒计时功能: 首次调用该函数时,将加载视图'view_login_success'并将$ data []数组传递给它。 $ data ['sec']保留应在屏幕上打印的剩余秒数。 当do-while循环结束时,应该将用户重定向到主页。 发生的事情是,'view_login_success'视图根本没有加载,5秒后,用户被重定向到主页。

function timerIn() {
    $now = time();
    $this->load->view('view_login_success', $this->data);
    do {
        if (time() - $now != 0) {
            $this->data['sec'] = $this->data['sec'] - 1;
            $this->load->view('view_login_success', $this->data);
            $now = time();
        }
    } while ($this->data['sec'] != 1);
    $this->data['sec'] = 5;
    redirect('user/start');
}

以下是观点:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Login geslaagd</title>
    <?php $this->load->view('templates/header2'); ?>
</head>
<body>
        <h2  style="text-align: center;"><?php echo strtoupper(substr($this->session->userdata('gebruikersnaam'),0,1));
        echo substr($this->session->userdata('gebruikersnaam'),1); ?>, U bent ingelogd!</h2>
        <p>U word doorverwezen: <?php echo $sec; ?> seconden...</p>
</body>
<?php $this->load->view('templates/footer'); ?>

如果有一种方法可以在JQuery的Javascript中执行此操作,那么请向我解释我应该怎么做以使其工作。 提前致谢! :)

2 个答案:

答案 0 :(得分:3)

这不是php的工作方式。

如果您希望页面在5秒后重定向,则必须在JS代码中执行此操作。 您可以重定向用户而不将视图发送到客户端。

现在你只需要等待5秒钟才能重定向。所以:

  • 显示视图
  • JS将拥有计时器,然后重定向。

javascript代码将是这样的:

setTimeout(function(){
  window.location.href = 'theURLyouwant';
},5000)

或者你可以使用ol' meta标签

<meta http-equiv="refresh" content="5; URL=theURLyouwant">

答案 1 :(得分:1)

使用code-igniter解决此问题。使用此引用类输出。输出类将自动加载。你不需要加载它。使用此功能设置标题。

 $this->output->set_header('refresh:time-to-redirect; url='.site_url("your-url"));

For more detail about this class.