#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 }