Допустим по нажатию кнопки или ссылки нам надо подгрузить аяксово форму в какой-то div. Средствами drupala и с библиотекой jQuery это очень просто делается. Но нам же не надо, что бы страница с формой перегружалась, правда? Следовательно на неё надо повесить ahah. Вот тут то и появиться проблема.

Для загрузки формы аяксом мы не будем грузить страницу целиком (нам же только форма нужна) и прервем загрузку сразу после вывода формы. Типа этого:

echo drupal_get_form('my_form');
exit;

Но в таком случае у нас на форму, после её загрузки ajax, не навесится обработчик ahah. Исправить это можно следующим образом:

$out = drupal_get_form('my_form'); //получим нашу форму
  $message = theme('status_messages'); //получим все сообщения (мы же хотим узнать что форма заполнена ошибочно или обновилась успешно?)
  $js = drupal_add_js(NULL, NULL, 'header'); //получаем все js
  unset($js['core']); //удаляем движки, т.к. нам не к чему повторно подключать jQuery и drupal
  unset($js['theme']); //JS темы то же не нужны, они уже загружены
 
  $out = drupal_get_js('header', $js).$message.$out;
  drupal_json(array('data' => $out, 'status' => 1)); //создаем json ответ, что бы AHAH Обработчик формы нормально обработал полученные данные
  exit;

Естественно при первой загрузке AJAX'ом надо учесть, что данные будут приходить в json и нужно активировать AHAH, то есть например так:

$.get('/myscript/ajax', '', function(data){
        //чего-то делаем
        Drupal.behaviors.ahah(); // инициализируем принудительно AHAH
}, 'json');