Вот и моя очередь настала попробовать этот чудо-сервер и словить первые грабли
Продолжая тему написания custom контроллеров не для html вывода предлагаю мой вариант обработчика AJAX-запросов. Напомню, в предыдущий раз я описывал контроллер для консольного демона
Помимо удобной для меня выдаче данных(я предпочитаю в 99% случаев выдвать JSON) есть ещё ряд фитч:
- Код контроллера многократно используется наследниками класса, которые при необходимости могут перегрузить необходимые методы. В них написать простой ответ клиенту с помощью не сложных функций можно в пару строк – не нужно отвлекаться на создание json ответа, а писать логику.
- Дефолтные ответы об успешном выполнении запроса, предупреждения или ошибки
- Ловятся ошибки фреймворка и формируется адекватный отчёт об ошибке, а не километровый HTML от Kohana – просто идеально при использовании fireBug или аналогичных средств отладки.
- Если вызываемый метод не реализован в наследнике, то будет выдан user-friendly ответ(опять же если использовать регламент возвращаемых структур json)
Допустим корневой объект который нужно обойти задан так:
var myobj =
{
"city": "spb",
"user": {
"name": "misha",
"age": 30,
"props": {
"enabled": 1,
"guest": 1
}
},
"browser": "lynx"
};
{
"city": "spb",
"user": {
"name": "misha",
"age": 30,
"props": {
"enabled": 1,
"guest": 1
}
},
"browser": "lynx"
};
Чтоб отправить поля формы(в примере с id=”f2s”), с помощью jQuery и аякса методом POST, в качестве второго аргумента не обязательно специально создавать объект в котором перечислять поля в виде ключ-значение.
Можно поступить так:
<a href="#f2s" onclick="
$.post(ajax_post_prefix + 'debug',
$('#f2s').serialize(),
function(dat) {
$('#debug').text('Debug:' + dat);
}, 'html');)
">debug me</a>
$.post(ajax_post_prefix + 'debug',
$('#f2s').serialize(),
function(dat) {
$('#debug').text('Debug:' + dat);
}, 'html');)
">debug me</a>