Много людей спрашивают на форумах как использовать ajax в modx с процессорами, коннекторами и остальным. Как советуют разработчики: не используйте коннекторы для фронтэндовой ajax функциональности, вместо этого используйте плоский документ для ajax вызовов. Позвольте мне рассказать вам, как это сделать.

Используйте коннекторы для фронтэнд ajax функциональности вместо обращения к чистому документу для ajax вызовов. Давайте я расскажу вам как это сделать. Создайте сниппет в бекенде и назовите его ajax. Скопируйте в сниппет представленный ниже код, работа которого объясняется в комментариях. В данных момент не беспокойтесь о переменных $_REQUEST

getOption('core_path').'components/'.$comp.'/processors/'.$procname.'.php'; if (file_exists($f)) { //влючение этого файла, таким образом здесь назначается вывод процессора $output= include $f; } else { $output= 'Action not found: '.$f; } //преобразовать вывод процессора в json формат return $modx->toJSON($output); теперь создайте документ с именем Ajax и псевдонимом – ajax. Назначьте пустой шаблон, определите «Скрыть от меню» чекбокс и опубликуйте его. В поле контент сделайте вызов некешированного ajax сниппета [[!ajax]] ![Ajax ресурс](/assets/images/ajax/AJAX.jpg) Всё, на этом мы закончили с ajax функциональностью. Всё, что вам нужно – это передать действие, переменные компонента в вашем javascript для любого ajax запроса в вашем сайте url для вашего ajax запроса – это vashsite/ajax, если у вас включены ЧПУ (SEF) иначе ваш url будет vashsite/index.php?id=ajaxdocumentid Например, ваша форма отправки ajaxsubmit, если ваш обработчик addpoll.php в components/vxpolls/processors/web/addpoll.php, тогда ваше действие web/addpoll, компонент – vxpolls в форме добавляет эти переменные как скрытые
<-!какие-либо другие элементы формы!->
В моём случае я использую mootools javascript, поэтому мне нужно сделать вызов $(‘myForm’).send(); теперь моя форма отослана к ajax документу (посмотрите на action формы). Аjax страница просто отошлёт форму к core/components/vxpolls/web/addpoll.php. Давайте разберём другой пример, где вы бы хотели получить данные о голосовании от backend/php с помощью ajax. Я подразумеваю, что вы возвращаете json данные var jsonRequest = new Request.JSON({url: 'ajax', onSuccess: function(responce){ alert(responce.pollname) }}).get({'action': 'web/getpoll', 'component': 'vxpolls'}); все js фреймворки поддерживают этот тип ajax функционала, посылая переменные в ajax url поэтому не волнуйтесь, если вы не используете mootools или если вы неуверены о том, как посылать данные от php файла в ответ на ajax запрос, смотрите сюда: //фильтрация входящих данных $poll=$modx->getObject('pollData',$_REQUEST['pid']); if(!$poll){ return $modx->error->failure('no poll found with given id'); } return $modx->error->success($poll->toArray()); Помните, что коннекторы лучше подходят для бекэнда, а не фронтэнда. [Оригинал статьи](http://venugopalreddy.com/modx/ajax-in-modx/)