Drupal 7 Field API: как программно отправить AJAX-запрос, указанный в свойстве #ajax элемента формы?
Я использую API-интерфейс поля Drupal 7 для перезагрузки части моей формы через AJAX. У меня есть кнопка, которая выполняет вызов, но я хотел бы удалить ее и сделать вызов программным способом в ответ на конкретное событие. Вот мой код для кнопки AJAX:
$form['documents']['reload_document_list_button'] = array(
'#type' => 'button',
'#value' => 'Обновить список документов',
'#ajax' => array(
'callback' => 'reload_document_list',
'wrapper' => 'document-list',
'method' => 'replace',
),
);
(Подробнее см. http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7.) Есть ли способ сделать это?
PS Я знаю, что могу создать стиль кнопки, чтобы сделать ее невидимой и вызвать событие "щелчка", но я ищу более удобный способ сделать это.
1 ответ
Думаю, есть два способа сделать это:
Во-первых, #ajax
свойство, как вы, возможно, прочитали, принимает event
ключ. Для элемента кнопки по умолчанию это событие mousedown
, (Вы можете проверить это здесь) Вы можете изменить его на пользовательское событие, скажем, customEvent
и вызвать это пользовательское событие из вашего кода Javascript как jQuery('#button-id').trigger('customEvent');
,
Кроме того, вы можете бросить #ajax
собственность Настройте конечную точку AJAX (используя hook_menu
) и установить reload_document_list
как его обратный вызов. Добавьте пользовательский Javascript, чтобы сделать запрос и обработать ответ. Вы можете посмотреть, как Drupal отправляет запрос AJAX при использовании #ajax
от misc/ajax.js
и используйте это как ссылку, если хотите.