我正在尝试在数据库交互之后和页面重定向之前(返回同一页面,但显示更新的数据)发出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。
作为旁注,如果有人知道除了警报之外更好的方法来做这个,这只是显示成功/失败消息,那么这也是受欢迎的。
谢谢!
答案 0 :(得分:4)
我的建议是让Javascript处理重定向而不是PHP。这样,您的PHP脚本不仅可以控制。也许你遇到了一个缓存问题或类似的输出问题。
无论如何,简单。 Javascript输出警报,阻止重定向发生,直到用户确认为止。
echo "<script>javascript:alert('".$data['record']."'); window.location = '".$uri."'</script>";
答案 1 :(得分:1)
你可以尝试一下:
header("refresh:20000000;url=".$uri);
由于redirect()是标题的快捷方式(“location:...”);它应该工作。可能你需要完整的URL而不是/ controller / action。
答案 2 :(得分:0)
:) 男人你必须冲洗();为了你的代码发送。在正常情况下,存储的所有输出然后发送
你的方法是最糟糕的方式!