С помощью плагина ManagerManager создаю свой тип TV параметра.
В нем есть зависимые select.
В данный момент я зарание подгружаю все данные, а хотелось бы использовать для этого ajax (index-ajax.php)
Пробовал в папке снипет, создать свой снипет ajax.
<?php
require_once(MODX_MANAGER_PATH . ’/includes/protect.inc.php’);
define(’MODX_API_MODE’, true);
include_once(MODX_MANAGER_PATH.’/includes/document.parser.class.inc.php’);
$modx = new DocumentParser();
$modx->db->connect();
$modx->getSettings();
$action = (int) $_REQUEST[’action’];
$razdel = (isset($_REQUEST[’razdel’]))? (int) $_REQUEST[’razdel’]: 17; //id раздела
$podrazdel = (isset($_REQUEST[’podrazdel’]))? (int) $_REQUEST[’podrazdel’]: 0; //id подраздела
$result = array();
switch($action) {
case 0:
$result = array("1"=>"test1","2"=>"test2");
//echo json_encode($result);
echo $modx->toJSON($result);
break;
}
?>
Потом с помощью Jquery отправлю запрос ajax (GET). Запрос уходит, на index-ajax.php параметр q указывает на файл моего снипета к примеру assets/snippets/ajax/my_ajax.php
В ответ получаю:
« MODx Parse Error »
MODx encountered the following error while attempting to parse the requested resource:
« `` is not numeric and may not be passed to makeUrl() »
Прошу помочь
С половиной разобрался, данные на сервер уходят, в таблице изменяются, только вот ответ мне надо получать в формате JSON. Ставлю dataType: "json", в сниппете пишу
$result = array("1"=>"test");
echo json_encode($result);
Ответ приходит строкой {"1":"test"}, выглядит прямо как строка json, но только почемуто это не json. Смотрю firebug.
Quote from: Redduck at Apr 06, 2011, 06:05 PM
С половиной разобрался, данные на сервер уходят, в таблице изменяются, только вот ответ мне надо получать в формате JSON. Ставлю dataType: "json", в сниппете пишу
$result = array("1"=>"test");
echo json_encode($result);
Ответ приходит строкой {"1":"test"}, выглядит прямо как строка json, но только почемуто это не json. Смотрю firebug.
1. выглядит как попытка присвоить переменной с именем "1" значение ’test’ - всё ли верно?
$result = array("test"=>"test");
2. (дополнительно, если после 1-го исправления всё будет также плохо)
header('Content-type: application/json; charset=utf-8');
header('Cache-Control: no-cache');
3.. будем посмотреть дальше