2010-10-28 38 views
2

我試圖有一個JavaScript警報,數據庫交互後,頁面重定向(回到同一頁面,但顯示更新的數據)之前。在重定向之前回復Javascript Alert,usleep(2000000)? - PHP的CodeIgniter

我想在使用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

警報應凍結瀏覽器,不應該需要睡眠或任何東西。不起作用? – Orbit 2010-10-28 13:06:50

+0

沒有隻是暫停,然後重定向頁面,這不是我所期望的... – Robimp 2010-10-28 14:37:53

回答

4

我的建議是讓Javascript處理重定向而不是PHP。這樣,你的PHP腳本不僅僅是控制。也許你正在遇到緩存問題或類似的問題。

無論如何,簡單。 Javascript輸出警報,阻止重定向發生,直到用戶確認爲止。

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

謝謝,這個解決方案爲我工作!仍然無法弄清楚爲什麼我的方式行不通,似乎也在做同樣的事情。 – Robimp 2010-10-28 14:47:43

+2

你的工作不可能是因爲echo的輸出被保留了,所以重定向()發生在你的輸出實際產生給瀏覽器之前。 – 2010-10-28 14:56:04

+0

對啊,這很有道理,謝謝你解釋。 – Robimp 2010-10-28 15:30:21

1

你可以給一個嘗試是:

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

由於重定向()是首部中的快捷方式( 「位置:...」);它應該工作。可能你需要完整的URL而不是/ controller/action。

+0

嗨,給了這個嘗試,但不能得到它的工作,它只是把它發送到控制器。不錯,儘管如此,會是一個很好的解決方案。 – Robimp 2010-10-28 14:48:37

0

:) 你必須flush();讓你的代碼發送。在正常情況下,所有輸出存儲然後發送。

你的方法是最糟糕的方式!

+1

不確定這是什麼意思。 – Robimp 2010-10-28 14:39:11

+0

如果你回聲,然後等2分鐘。 Php不會發送任何東西到瀏覽器。你需要明確地刷新輸出緩衝區! – nerkn 2010-10-28 15:09:18

+0

啊,是的,我明白了,將來還會記得。感謝您的回答! – Robimp 2010-10-28 15:31:20