2012-08-08 7 views
11

Bene, ho una pagina con collegamenti ai report. Ogni volta che qualcuno fa clic su un rapporto, possono scaricare il file excel. Tuttavia, a volte non ci sono campi per fare un rapporto; in tal caso, voglio visualizzare un messaggio di avviso e dopo aver fatto clic su "accetta", vengono reindirizzati al pannello principale. Quando fanno clic sul rapporto, vanno a un controller che utilizza uno switch per ottenere i dati. Se non ci sono dati, il modello restituisce FALSE; così alla fine del controllore, controllo:Visualizza messaggio di avviso e reindirizzamento dopo aver cliccato su accetta

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'); 
} 

Se mi libero di redirect('admin/ahm/panel'); poi le opere di allarme, ma si muove l'utente alla pagina che avrebbe dovuto generare il file excel. Ma se uso il reindirizzamento, il controller sposta l'utente sul pannello principale senza mostrare l'avviso.

Qualsiasi aiuto è apprezzato.

Grazie in anticipo.

+0

Redirect prima, notificando la pagina che reindirizza a che deve essere mostrato un avviso. – kevin628

risposta

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

e sbarazzarsi della riga redirect qui sotto.

Si stavano mescolando due mondi diversi.

+0

C'è un problema con questo. Basta aggiungere l'url che voglio andare all'url corrente. Ma non reindirizza. Ho anche provato a usare l'intero URL (con http: //) e ancora non lo reindirizza; lo aggiungo all'URL corrente e rimango bloccato su un ciclo di allerta infinito. – fedejp

+0

modificato. cambiato '+ =' a '='. In precedenza ho aggiunto in modo specifico l'URL corrente perché pensavo che lo volessi. Ma comunque, dovrebbe funzionare ora. – Prasanth

+0

Questo non è sicuro, disabilitando javascript si lascerebbe continuare l'ulteriore elaborazione. – Ranhot

1

La funzione redirect pulisce il buffer di output e esegue un reindirizzamento header('Location:...'); ed esce dall'esecuzione dello script. La parte che stai cercando di echeggiare non verrà mai emessa.

È necessario informare sulla pagina di download o notificare sulla pagina che si reindirizza sui dati mancanti.

2

Combinando CodeIgniter e 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>"; 

Nota: La funzioneredirect() include automaticamente il percorso base_url è per questo che non era necessario lì.

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

Prova questo modo in cui funziona ...

Innanzitutto, assegnare la finestra con la nuova pagina in cui la finestra di avviso deve essere visualizzato poi mostrare la finestra di avviso.

0

che ha funzionato ma provalo in questo modo.

echo " alert ('Non ci sono campi per generare un rapporto');

window.location.href = 'admin/AHM/pannello';

";

avviso in cima allora posizione accanto

4

Usa questo codice per reindirizzare la pagina di

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

In questo modo 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>"; 
}` 
Problemi correlati