Mostrar mensaje de alerta y redirigir después de hacer clic en aceptar

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 después de que hagan clic en “aceptar”, se redirigen 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, compruebo:

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

Si me deshago de la redirect('admin/ahm/panel'); entonces la alerta funciona, pero mueve al usuario a la página que debía generar el archivo de Excel. Pero si uso la redirección, el controlador mueve al usuario al panel principal sin mostrar la alerta.

Cualquier ayuda es apreciada.

Gracias por adelantado.

 echo ""; 

y deshacerse de la línea de redirect abajo.

Estabas mezclando dos mundos diferentes.

Usa este código para redirigir la página.

 echo ""; 

Combinando CodeIgniter y JavaScript:

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

Nota: la función redirect() incluye automáticamente la ruta base_url por lo que no fue necesaria allí.

La función de redirect limpia el búfer de salida y hace un header('Location:...'); Redireccionamiento y salida de ejecución de script. La parte que está intentando hacer eco nunca se emitirá.

Debe notificarlo en la página de descarga o notificarlo en la página a la que redireccione sobre los datos faltantes.

 echo ""; 

Prueba de esta manera funciona …

Primero asigne la ventana a la nueva página donde se debe mostrar el cuadro de alerta y luego muestre el cuadro de alerta.

De esta manera funciona

  if ($result_array) to_excel($result_array->result_array(), $xls,$campos); else { echo ""; echo ""; }` 

Eso funcionó pero inténtalo de esta manera.

 echo ""; 

alerta en la parte superior luego ubicación siguiente