【问题标题】:Echo Javascript Alert Before Redirect, usleep(2000000)? - PHP CodeIgniterEcho Javascript Alert Before Redirect, usleep(2000000)? - PHP CodeIgniter
【发布时间】:2011-05-01 21:15:34
【问题描述】:

我正在尝试在数据库交互之后和页面重定向之前(返回同一页面,但显示更新的数据)发出 javascript 警报。

我认为在使用 usleep() 重定向之前暂停可能会起作用,但它似乎忽略了它。如果我注释掉重定向,它会将我带到控制器页面,并弹出警报。

有什么想法吗?

这是我的代码:

function connect () {
    $client_id = $this->uri->segment(3);
    $related_id = $this->uri->segment(5);
    $related_name = $this->uri->segment(6);

    $uri_segments= $this->session->userdata('segments');
    $uri = base_url()."index.php".$uri_segments;

    if (!$this->uri->segment(4)) {
    $this->load->model('get_clients_model');
    $data['records'] = $this->get_clients_model->getAllClients();
    $this->load->view('clients_all_related',$data);
    }

    elseif ($this->uri->segment(4) == "add") {

        $this->load->model('get_clients_model');
        $data['record'] = $this->get_clients_model->getSingleClient($client_id,$related_id,$related_name);

        echo "<script>javascript:alert('".$data['record']."');</script>";
        usleep(2000000);
        redirect($uri); // send back to previous page with updated related contact

    }
}

相关部分在elseif中。

作为旁注,如果有人知道除了警报之外的更好的方法,它只是显示成功/失败消息,那么这也是受欢迎的。

谢谢!

【问题讨论】:

  • 警报应该冻结浏览器,不需要睡眠或其他任何东西。不工作?
  • 不只是暂停然后重定向页面,这不是我所期望的......

标签: php javascript codeigniter


【解决方案1】:

我的建议是让 Javascript 而不是 PHP 来处理重定向。这样一来,您的 PHP 脚本就不仅仅是控制了。也许您的输出遇到了缓存问题或类似问题。

不管怎样,很简单。 Javascript 输出警报,在用户确认之前阻止重定向发生。

echo "<script>javascript:alert('".$data['record']."'); window.location = '".$uri."'</script>";

【讨论】:

  • 谢谢,这个解决方案对我有用!仍然无法弄清楚为什么我的方法不起作用,似乎在做同样的事情。
  • 你的不太可能,因为 echo 的输出被保留了,所以 redirect() 发生在你的输出实际到达浏览器之前。
【解决方案2】:

你可以试试看:

header("refresh:20000000;url=".$uri);

因为 redirect() 是 header("location:..."); 的快捷方式。它应该工作。您可能需要完整的 URL 而不是 /controller/action。

【讨论】:

  • 您好,试了一下,但无法正常工作,它只是将其发送到控制器。不错的尝试,这将是一个很好的解决方案。
【解决方案3】:

:) 伙计,你必须冲洗();为了您的代码发送。在正常情况下,所有输出都存储然后发送。

你的方法最糟糕!

【讨论】:

  • 如果你回显然后等待说 2 分钟。 Php 不会向浏览器发送任何内容。您需要显式刷新输出缓冲区!
  • 啊,是的,我明白了,以后会记得的。感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 2020-02-08
相关资源
最近更新 更多