2012-08-08 115 views
11

嗯,我有一個頁面鏈接到報告。每當有人點擊一個報告時,他們可以下載Excel文件。但是,有時候沒有字段可以進行報告。在這種情況下,我想顯示一條警報消息,並在點擊「接受」後,他們會被重定向到主面板。當他們點擊報告時,他們轉到使用switch獲取數據的控制器。如果沒有數據,則返回FALSE;所以在控制器結束後,我檢查:點擊接受後顯示警告消息和重定向

if ($result_array != FALSE) 
    to_excel($result_array->result_array(), $xls,$campos); 
else { 
    echo "<script>alert('There are no fields to generate a report');</script>"; 
    redirect('admin/ahm/panel'); 
} 

如果我擺脫redirect('admin/ahm/panel');然後警報的作品,但它移動用戶本來應該生成Excel文件的頁面。但是如果我使用重定向,控制器將用戶移到主面板而不顯示警報。

任何幫助表示讚賞。

在此先感謝。

+0

重定向第一,通知您重定向到頁面需要顯示警報。 – kevin628 2012-08-08 17:11:36

回答

39
echo "<script> 
alert('There are no fields to generate a report'); 
window.location.href='admin/ahm/panel'; 
</script>"; 

並擺脫下面的redirect一行。

你在混淆兩個不同的世界。

+0

這有一個問題。它只是添加我想要去的當前網址的網址。但它不重定向。我甚至嘗試使用整個網址(使用http://),但仍然沒有重定向;只是將它添加到當前的url中,並且我陷入了無盡的警報循環中。 – fedejp 2012-08-08 17:36:58

+0

編輯。將'+ ='改爲'='。之前我特意加入了當前的網址,因爲我以爲你想要它。但無論如何,現在應該工作。 – Prasanth 2012-08-08 17:42:51

+0

這是不安全的,禁用javascript會讓進一步處理繼續。 – Ranhot 2016-02-15 08:27:35

1

redirect函數清理輸出緩衝區並執行header('Location:...');重定向並退出腳本執行。您試圖回顯的部分將永遠不會輸出。

您應該在下載頁面上通知或在頁面上通知您重定向到關於丟失的數據。

2

結合笨和JavaScript:

//for using the base_url() function 
$this->load->helper('url'); 

echo "<script type='javascript/text'>"; 
echo "alert('There are no fields to generate a report');" 
echo "window.location.href = '" . base_url() . "admin/ahm/panel';" 
echo "</script>"; 

注:redirect()功能會自動包含base_url路徑,這就是爲什麼它是不需要有。

0
echo "<script> 
window.location.href='admin/ahm/panel'; 
alert('There are no fields to generate a report'); 
</script>"; 

試試這種方式它的工作原理...

首先分配新頁面,必須要顯示的警告框則顯示警告框的窗口。

0

工作,但嘗試這種方式。

回聲 「 警報( '沒有字段來生成報告');

window.location.href = '管理員/ AHM /面板';

」;

上,然後上面的位置,毗鄰

4

使用此代碼警報重定向頁面

echo "<script>alert('There are no fields to generate a report');document.location='admin/ahm/panel'</script>"; 
0

這樣,它works`

if ($result_array) 
    to_excel($result_array->result_array(), $xls,$campos); 
else { 
    echo "<script>alert('There are no fields to generate a report');</script>"; 
    echo "<script>redirect('admin/ahm/panel'); </script>"; 
}`