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 и используйте это как ссылку, если хотите.

Другие вопросы по тегам