2012-08-08 670 views
11

Bueno, tengo una página con enlaces a informes. Cada vez que alguien hace clic en un informe, puede descargar el archivo de Excel. Sin embargo, a veces no hay campos para hacer un informe; en ese caso, quiero mostrar un mensaje de alerta y luego de que hagan clic en "aceptar", se los redirecciona al panel principal. Cuando hacen clic en el informe, van a un controlador que usa un switch para obtener los datos. Si no hay datos, el modelo devuelve FALSE; así que al final del controlador, puedo comprobar:Mostrar mensaje de alerta y redirigir después de hacer clic en aceptar

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

Si me libro de redirect('admin/ahm/panel'); entonces las obras de alerta, pero se mueve al usuario a la página que se suponía iba a generar el archivo de Excel. Pero si utilizo la redirección, el controlador mueve al usuario al panel principal sin mostrar la alerta.

Cualquier ayuda es apreciada.

Gracias de antemano.

+0

redirección primero, notificando a la página redirige a que una alerta necesita ser mostrada. – kevin628

Respuesta

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

y deshacerse de redirect línea a continuación.

Estabas mezclando dos mundos diferentes.

+0

Hay un problema con esto. Simplemente agrega la url a la que quiero acceder a la url actual. Pero no redirige. Incluso intenté usar toda la url (con http: //) y aún así no redirige; simplemente lo agrega a la url actual y me quedo atascado en un ciclo de alerta interminable. – fedejp

+0

editado. cambiado '+ =' a '='. Anteriormente, agregué específicamente a la URL actual porque pensé que la querías. Pero de todos modos, debería funcionar ahora. – Prasanth

+0

Esto no es seguro, deshabilitar javascript permitiría continuar el procesamiento. – Ranhot

1

La función redirect limpia el búfer de salida y realiza una redirección header('Location:...'); y sale de la ejecución del script. La parte que intentas repetir nunca se dará como resultado.

Usted debe notificar en la página de descarga o notificar en la página que redirige a la información faltante.

2

Combinando CodeIgniter y 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 funciónredirect() incluye automáticamente la ruta base_url es por eso que no era necesario allí.

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

Prueba este modo en que funciona ...

Primero, asigne la ventana con la nueva página en el cuadro de alerta se debe mostrar a continuación, mostrar el cuadro de alerta.

0

que funcionó, pero pruébalo de esta manera.

echo " alert ('No hay campos de generar un informe');

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

";

alerta en la parte superior y luego el código de ubicación próximo uso

4

para redirigir la página

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

De esta manera 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>"; 
}` 
Cuestiones relacionadas