Skip to content

Instantly share code, notes, and snippets.

@denysbutenko
Last active December 12, 2015 02:29
Show Gist options
  • Save denysbutenko/dd41e200ac8169d8b22a to your computer and use it in GitHub Desktop.
Save denysbutenko/dd41e200ac8169d8b22a to your computer and use it in GitHub Desktop.
<?php
//Воспользовавшись сниппетом getResourceField вывести данные поля нужного ресурса
//Код сниппета ajax:
// Откликаться будет ТОЛЬКО на ajax запросы
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}
// сниппет будет обрабатывать не один вид запросов, поэтому работать будем по запрашиваемому действию
$action = $_POST['action'];
// Если в массиве POST нет действия - выход
if (empty($action)) {return;}
//А если есть - работаем
$res = '';
switch ($action) {
case 'field':
$params = array();
$params['id'] = $_POST['id'];
$params['field'] = $_POST['field'];
$res = $modx->runSnippet('getResourceField', $params); break;
// А вот сюда потом добавлять новые методы
}
// Если у нас есть, что отдать на запрос - отдаем и прерываем работу парсера MODX
if (!empty($res)) {
die($res);
}
?>
//Я создал отдельно ресурс в корне контекста, под названием ajax и соответствующим псевдонимом, он доступен по адресу mysite.ru/ajax.html, содержащий:
[[!ajax]]
//Вероятно чтобы «не путался под ногами» вызов сниппета и централизовать адрес ajax запросов. На всякий случай задал пустой шаблон и, само собой, скрыл для меню.
//Код в теге HEAD используемого для примера шаблона:
<script type="text/javascript" language="JavaScript" src="assets/js/jquery/main.js"></script>
<script type="text/javascript" language="JavaScript">
jQuery(function($){
$('#results').load('ajax.html', {action: 'field', id: '56', field: 'content'}, function(){
alert('Запрос успешно выполнен! Данные получены.');
});
});
</script>
//Код в теге BODY, в любом удобном месте, используемого для примера шаблона:
<div id="results"></div>
//При загрузке страницы с заданным шаблоном, используемым для примера, в тег div, под идентификатором results, произведётся асинхронная загрузка содержимого поля content ресурса с ID 56.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment