CodeIgniter как и большинство PHP фреймворков построен на шаблоне программирования MVC и использует, в основном, комбинацию HTML+CSS+PHP. То есть для каждого отображения нужно писать отдельный файл во views, для каждого действия отдельный метод и т.д. То есть получается нагромождение файлов, точнее нагромождение вьюшек и большое количество перезагрузок страницы. Что же делать с асинхронными запросами?
Решение проблемы асинхронных запросов путем установки AJAX в CodeIgniter.
В последней версии фреймворка представлен класс JavaScript. Этот класс только появился и функций там очень мало. JavaScript построен на jQuery, так что предоставленные нам функции – это эффекты и обработка событий. Скорее всего, в будущем, класс пополниться функциями. В итоге даже отдельный класс не содержит ничего связанного с AJAX‘ом. AJAX, он же Asynchronous Javascript And XML (асинхронный JavaScript и XML) – представляет из себя подход клиентского программирования web приложений, позволяющий отправлять запросы на сервер фоново (незаметно для пользователя) и принимать ответы. С помощью него можно обновлять отдельные части страницы, тексты, блоки и т.д. Например при нажатии на какую-нибудь кнопку страницы не будет переходить на другую страницу, обрабатывать запрос и генерировать страницу заново, а меняется только определенный блок без перезагрузки всей страницы. Можно сказать, что с помощью AJAX‘а web приложения могут стать как стационарные (которые хранятся на пользовательских компьютерах) программы.
Что могу сказать любителям минимизировать обновление страниц и писать кучи AJAX запросов создавая полуодностраничные приложения – лучше не использовать CodeIgniter и писать на обычном PHP. Пользуясь AJAX смысл MVC теряется. К тому же так будет проще и быстрее написать нужное приложение, нежели напрягаться и мучиться с прикручиванием AJAX библиотек к CodeIgniter‘у, не забываем что JavaScript можно прикрутить только во вьюшки. Если приложение большое, значит вьюшек будет много и цель не оправдывает средства, а если приложение в пару страниц то смысла в использовании CodeIgniter‘а нет. Так что совет – если предполагается использовать много асинхронных запросов, то лучше писать на простом PHP.
Если же все таки приспичило в CodeIgniter‘е вставить AJAX или же просто не было времени, можно попытаться найти дополнительные библиотеки и классы к фреймворку, позволяющие это сделать, либо прикручивать на прямую (как делал я). Вся трудность в том, что код JavaScript придется писать во вьюшках и в каждой по отдельности. Это может привести к повторению одного и того же кода много раз. К тому же все запросы во внутренние папки приложения обрабатываются фреймворком, так что при обращении к любому файлу не контроллеру будет приводить к ошибке. Как делал я: папку со всеми JavaScript библиотеками и скриптами вывел на уровень выше корневой папки CodeIgniter‘а и в той же папке создавал PHP файлы для обработки асинхронных запросов. То есть, например: приложение находится в папке source, тогда файлы CodeIgniter находятся: source\application, source\system, source\user_guide, соответственно все что связанно с web приложением и его работой находится в source/application. Таким образом все, что связано с JavaScript‘ом, AJAX‘ом и PHP файлами для обработки асинхронных запросов нужно выносить за эту папку, например в source\js. И все обращения к файлам из папки js во вьюшках прописываются просто, например js/index.js или js/index.php. Таким образом можно написать приложение с AJAX‘ом и в CodeIgniter‘е, но это увеличение числа файлов и папок, то есть лишнее напряжение.
Каждому свое, CodeIgniter хорошо справляется и без асинхронных запросов, а полуодностраничные с большим количеством AJAX‘а легко пишутся и на обычном PHP.