Отображать сообщение предупреждения и перенаправлять после нажатия

Ну, у меня есть страница со ссылками на отчеты. Когда кто-то нажимает на один отчет, он может загрузить файл 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. Но если я использую перенаправление, контроллер перемещает пользователя на главную панель без предупреждения.

Любая помощь приветствуется.

Спасибо заранее.

Ответ 1

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

и избавиться от строки redirect ниже.

Вы смешивали два разных мира.

Ответ 2

используйте этот код для перенаправления страницы

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

Ответ 3

Объединение CodeIgniter и 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, поэтому там не требуется.

Ответ 4

Функция redirect очищает выходной буфер и выполняет перенаправление header('Location:...'); и завершает выполнение script. Часть, которую вы пытаетесь эхо, никогда не будет выводиться.

Вы должны либо уведомить вас на странице загрузки, либо уведомить на странице, на которую вы перенаправляете про недостающие данные.

Ответ 5

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

Попробуйте так, как это работает...

Сначала назначьте окно новой страницей, на которой должно отображаться окно предупреждения, затем отобразите окно предупреждения.

Ответ 6

который работал, но попробовал это так.

эхо "alert (" Нет полей для создания отчета");

window.location.href= 'администратор/AHM/Панель';

";

предупреждение сверху, а затем следующее.

Ответ 7

Таким образом, он работает`

   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>";
}`