Короткий короткий ответ: вы захотите получить что-то вроде:
$.ajax(ajax.options);
Что является частью jQuery, но с набором опций, которые помогут вам подключиться к Drupal Goodness с точки зренияобработки успеха, эффектов и т. д. Вот что эффективно происходит в вашем примере с «огромным хаком».
Для создания новой функции Drupal.ajax по-прежнему требуется синтетический элемент:
base = 'someid'
element = $('<a href="'+uri+'" class="use-ajax">Loading Vars</a>');
element_settings = {'url': uri, 'event': 'click'}
myAjax = new Drupal.ajax(base, element, element_settings)
Но вы можете, по крайней мере, запустить его, не имитируя щелчок в пользовательском интерфейсе:
myAjax.eventResponse(element, 'click')
Такое чувство, что должен быть лучший способ сделать это, но для этого требуется другой способ настройкиначальный прототип ajax, который не требует элемента DOM.Поскольку большая часть набора взаимодействий зависит от того, как перенести данные обратно в DOM, я не думаю, что этот вариант использования пока хорошо поддерживается.
Возможно также, что можно перейти прямо к jQueryс надлежащим набором опций и получим нужный эффект, но функции прототипа Drupal.ajax довольно часто ссылаются на себя, поэтому делать это без класса Drupal.ajax кажется рискованным.