Ajax-пагинация в фреймворке CodeIgniter![]() В данной статье рассматривается реализация Ajax-пагинации в фреймворке CodeIgniter с использованием JavaScript. Cначала сделаем обычную пагинацию, а потом разберемся как реализовать поверх неё пагинацию без перезагрузки всей веб-страницы. В итоге получим ajax наложение на обычную пагинацию. У нас есть список новостей, который хранится в базе данных в таблице news. Нам нужно вывести этот список на веб-страницу. Поскольку база данных будет пополняться новыми новостями, то необходимо отображать фиксированное число записей и номера страниц в виде ссылок, кликая по которым, мы сможем просмотреть все необходимые нам данные. Это и есть пагинация (постраничная навигация) к выводимому списку новостей. В фреймворке CodeIgniter для работы с пагинацией есть библиотека pagination. Итак, наши дальнейшие действия: 1. Создаем модель mdl_news (файл applicationmodelsmdl_news.php). Здесь будут функции по работе с данными, т.е. с нашей таблицей news. 2. В конструкторе контроллера (контроллер application/controllers/news.php) подключаем библиотеку pagination и нашу модель mdl_news. 3. Создаем метод контроллера, в котором будет реализована вся необходимая логика. 4. Создаем отображение, в которое и выведем наши данные. Ниже смотрите код. Он содержит комментарии. Модель (файл applicationmodelscar_model.php):
Контроллер (applicationcontrollersajax.php):
Отображение (applicationviewspagination.php):
Итак, обычная пагинация готова. Она должна функционировать уже. Теперь в наш код необходимо внести некоторые дополнения и получить уже ajax-пагинацию. Что необходимо сделать? Смотрите, сейчас у нас в контроллере есть строка:
В этой строке генерируются ссылки на страницы нашего списка (первую, вторую, следующую, предыдущую и т.д.) Эти ссылки мы и выводим в отображение. Теперь наша задача написать код, который будет перехватывать клик по этим ссылкам и вместо перенаправления, которое сейчас выполняется мы будет посылать ajax-запрос на получение необходимых данных и выводить эти данные в нужный блок. Вносим изменения в наше отображение pagination
Какие изменения? - таблицу мы поместили в блок <div> и присвоили ему id=’ajax_content’. Содержимое этого блока будет меняться при клике на ссылки пагинации. - вывод ссылок заключили в тег <span class=’ajax_pag’>. - написали jQuery скрипт. Что происходит в скрипте? При клике на любую ссылку внутри блока с классом, мы получаем
значение ссылки, по которой был произведен клик. И вместо стандартного
перехода по этой ссылке, мы делаем ajax-запрос по полученному пути. Теперь в контроллере в метод paginate внесем проверку на тип запроса (обычный или ajax). Для обычного запроса у нас уже есть обработка, а в случае ajax-запроса мы будем выводить другое отображение, которое создадим ниже.
IS_AJAX – это константа, которую необходимо определить в файле
Теперь приведем содержимое отображения news_ajax, которое мы возвращаем в случае ajax-запроса. <script type="text/javascript" src="<?=base_url()?>js/ajax_pagination.js"></script> Здесь мы также вынесли скрипт в отдельный файл ajax_pagination.js как полагается. Заметьте что он подключается в обоих отображениях - и news, и news_ajax. Источник: loco.ru |
КОНТАКТЫ
г. Екатеринбург info@vismech.ru |
текущее: НОВОСТИ 05.12.2013 - Уход за флэш-накопителем 05.12.2013 - Компьютер самопроизвольно выключается 05.12.2013 - Почему не запускается компьютер? 27.11.2013 - Canon Legria HF R406 - Описание видеокамеры 27.11.2013 - TravelMate P645 новый лэптоп бизнес-класса от Acer |