flashdata не работает после удаления записи в codeigniter

#php #jquery #codeigniter

#php #jquery #codeigniter

Вопрос:

Всем доброго дня. Я новичок в CodeIgniter и пытаюсь использовать flashdata для отображения сообщения «успешно» после удаления записи. Я использую jQuery для отображения своих данных.

Вот код Model страницы:

 function delete_post($postID)
{
    $this->db->where('post_id', $postID);
    $this->db->delete('khanposts');
}
  

Код Controller страницы:

 function deletepost($postID)
{
    $this->khanpost->delete_post($postID);
    $this->session->set_flashdata('msg', 'Record Deleted!');
    redirect(base_url().'khanposts/index/');
}
  

Код View страницы:

 foreach ($posts as $row){
echo '<tr><td><a href="' .base_url(). 'khanposts/deletepost/' .$row['post_id']. '"><i>Delete</i></a></td></tr>';
}
<script>
$(document).ready(function() {
$('.delmsg').hide();
<?php if($this->session->flashdata('msg')){ ?>
$('.delmsg').html('<?php echo $this->session->flashdata('msg'); ?>').show();
});
<?php } ?>
</script>
  

Запись удаляется, но я не вижу никакого сообщения после удаления. Я делаю неправильно? Любое решение будет полезным. Спасибо.

Комментарии:

1. При просмотре исходного кода страницы вы можете увидеть сообщение об ошибке?

2. @Craig, нет, я не вижу никакого сообщения. Но запись удаляется.

Ответ №1:

Во-первых, но, вероятно, это ничего не изменит, но я поменял местами 2-ю на последнюю и 3-ю на последнюю строки в вашем коде просмотра:

 foreach ($posts as $row){
    echo '<tr><td><a href="' .base_url(). 'khanposts/deletepost/' .$row['post_id']. '"><i>Delete</i></a></td></tr>';
}

<script>
    $(document).ready(function() {
        $('.delmsg').hide();
        <?php if($this->session->flashdata('msg')){ ?>
            $('.delmsg').html('<?php echo $this->session->flashdata('msg'); ?>').show();
        <?php } ?>
    });
</script>
  

Я бы предположил, что это проблема с загрузкой библиотеки сеансов. Итак, убедитесь, что у вас загружается класс session либо в application/config/autoload.php файл конфигурации путем добавления ‘session’ в массив $autoload[‘libraries’] : $autoload['libraries'] = array('session'); … или с помощью $this->load->library('session') в вашем контроллере.

Если это все еще не работает, убедитесь, что вы находитесь в «режиме разработки» в корневом каталоге index.php файл и что ваш пример разработки выглядит следующим образом:

     case 'development':
         error_reporting(E_ALL);
         ini_set('display_errors', 1);
  

… и посмотрите, может ли PHP предоставить вам какую-либо дополнительную информацию о том, что происходит.

Удачи! 🙂

Ответ №2:

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

 if($this->session->flashdata('msg'))
{?>
  <div class="delmsg"><?php echo $this->session->flashdata("msg"); ?></div>

<?php }