Вы можете использовать стандартные элементы ajax без каких-либо ограничений. Для удобства добавления всех логических проверок - отправляйте аякс на текущую страницу (location.href). Чтобы исключить все вышестоящие слои - направляйте обращение на отдельный логический файл. Потому что в остальных случаях будет использоваться
Получив заголовок отправки ajax запроса - приложение начинает работать в режиме ajax - это значит, что все полученные сообщения об ошибках будут записаны в действие передачи ошибки. Редиректы - будут переданы через сообщения о редиректах. Сообщения отдалки будут переданы через сообщения об выводе отладочной информации.
Для расширенной работы сайта по технологии приложения существует надстройка над ajax. Отличительная особенность работы с ajax заключается в том, что вы делаете запрос, который возвращает события (events), которые должен отработать сайт в соответствии со своей логикой. Это могут быть не связаные с действием пользователя. Таким образом вы получаете больше контроля, т.к. сервер отвечает за все, что должно происходить на странице пользователя.
Для работы с расширенным ajax - вам нужно заинклудить файл core_ajax.js
В файле содержаться функции, необходимые для связки. Чтобы отправить запрос с определенным действием - существует Javascript функция
core_ajax(act,array=[],param,loading);
При вызове - на эту же страницу отправляется POST запрос, содержащий действие и массив с данными.
Для обработки запроса - в том же каталоге вы можете создать файл ajax.php, который автоматически будет обработан в случае ajax запроса
Для работы с ajax существует класс AJAX. Файл необходимо наполнять примерно следующим содержанием
<?php
switch(c\ajax::getAct()){
// таким образом php ловит переданные со стороны Javascript данные
case 'my_custom_action':
// таким образом php посылает команду с данными на сторону Javascript
c\ajax::addAction('JSaction',array(data));
...
break;
}
Параметр param
содержит переменную, которая будет передана дальше в функцию core_feedbacks, что расширяет возможности по вызову функции из конкретного элемента.
Параметр loading
добавляет класс loading
к элементу param
и автоматически выключается при получении ответа
Соответственно при совпадении действия - будет выполнен нужный участок кода.
Чтобы дать скрипту обратную связь - используются
Как было сказано ранее - в режиме ajax все основные действия переходят в действия ajax. В файле core_ajax.php
предусмотрены действия redirect, message, var и отладочные сообщения consoleLog, consoleCount, consoleDir, consoleTable, consoleGroup, consoleGroupEnd
Для добавления произвольного действия - используется функция
c\ajax::addAction($action,$data=array());
Переданные с помощью данной функуии команды будут отработаны через специальные обработчики на стороне Javascript
core_feedbacks['JSaction']=function(data,param){
...
}
В завершении обработки в файле ajax.php - следует насильно завершать обработку вызова Ajax, чтобы завершить скрипт и не выполнять обычные команды при помощи операции
c\ajax::render();
Реализация загружаемой части контента висит на пользователе.
Для подгрузки части контента аяксом и встройки этой части внутрь элемента - используется функция
core_load(selector,act,array=[],param,loading);
Данная команда посылает аякс запрос с передачей дополнительного параметра загрузки данных. Это заставляет все отладочные и javascript встройки отрабатывать как для обычного html вывода. В остальном функция работает аналогично Jquery.load
и core_ajax()
Если же будет получен ответ, формата JSON - он успешно обработается как скрипт
Возможны два случая загрузки содержания при помощи ajax:
В первом случае - в главном файле нужно вставить директиву
if (isset($_POST['_partition_content']))c\mvc::$partical_content_folder=true;
следует расположить файл ajax, в котором указать возврат шаблона относительно c\ajax::getAct()
во втором
if (isset($_POST['_partition_content']))c\mvc::$partical_content_folder=$_POST['_act'];
При вызове - в параметре act стоит передать ссылку на базовую страницу относительно корня проекта, начиная с /{folder}
Все остальные видимые действия программа будет устанавливать автоматически. Следует учесть, что в зону контента также будут загружены скрипты и стили из побочной страницы. Если на части страниц присутсвуют скрипты, которые должны загружаться лишь раз - следует их располагать в зоне базовой страницы
Переключение методов ещё сырое и будет дорабатываться для достижения комбинаций в одном проекте
Для добавления во все вызываемые методы дополнительных параметров - используйте переменную
var core_ajax_var={key:'val'}
которая будет примешана к каждому запросу через core_ajax или core_load
c\mvc::addJsVar('core_ajax_var', ['_csrf'=>session_id()]);
Создано при помощи сервиса Core CMS