Quote from: Lord at Mar 04, 2008, 03:11 PM
По поводу, что дальше - дальше написать js, который бы делал нужные вещи...
Какие вещи? Вы, как мне кажется, совсем не представляете, как работает асинхронное взаимодействие с сервером, и какие при этом стоят задачи.
1. На первом этапе нужно сформировать список Select – как его сформировать на основе Ditto? В принципе это можно сделать, но нужно ли палить из пушки по воробьям?
2. После выбора в первом списке конкретного значения на сервер отправляется запрос, в котором передается это значение. Как отловить на сервере запрос? Подскажу – за это отвечает программа в файле index-ajax.php, и при этом среда MODx не запускается, так что никаких Ditto там и близко нет.
3. Программа должна сформировать ответ со списком значений второго Select, при этом среда MODx не загружена. Как это сделать с помощью Ditto?
Проще всего ответ формировать прямо в HTML, тогда достаточно будет программы на PHP, а в JavaScript практически ничего делать не надо (только подставить полученный код). Более универсальное решение – передавать в каком-нибудь стандартном формате, а на стороне клиента раскодировать. То есть в программе на PHP создать фрагмент формата XML или JSON, а в программе на JavaScript преобразовать его в HTML. Но это предполагает дополнительное программирование, без которого вполне можно обойтись. Еще раз подчеркну, что формировать список нужных вариантов в формате, например, JSON придется самостоятельно, так как среда MODx при асинхронном запросе не запускается.
Ditto позволяет сформировать статический документ в формате JSON, который в принципе можно получать и обрабатывать, но как это можно использовать в описанной задаче – непонятно.
Quote from: Lord at Mar 04, 2008, 03:35 PM
дальше, делаем сниппет, который нам генерирует JSON или XML, к нему образается JS-код, когда мы выбираем один из вариантов списка, чтобы подгрузить JSON со следующим списком.
Очень интересно, как JavaScript может обращаться к сниппету. Есть два варианта – идет обычный запрос на сервер и загружается новый документ (в котором есть вызов сниппета) или идет асинхронный запрос и передается только нужная информация. Во втором случае вообще никаких сниппетов нет.