Создание, продвижение сайтов
40-33-54

Отправить Webform-у с помощью AJAX

14 января 2017

Пример отправки веб-формы webform_client_form_123 с помощью AJAX:

/**
 * Implements hook_form_FORM_ID_alter(): webform_client_form_123.
 */
function mymodule_form_webform_client_form_123_alter(&$form, &$form_state) {
  $form['actions']['submit']['#ajax'] = array(
    'callback' => 'mymodule_form_webform_client_form_ajax_submit',
    'wrapper' => $form['#id'],
  );
  // Удаляем #pre_render, иначе не будет работать ajax
  unset($form['actions']['submit']['#pre_render']);
}
 
/**
 * Ajax submit.
 */
function mymodule_form_webform_client_form_ajax_submit($form, &$form_state) {
  if (form_get_errors()) {
    return $form;
  }
  else {
    $webform = $form['#node']->webform;
    return check_markup($webform['confirmation'], $webform['confirmation_format']);
  }
}

Есть и соответствующий модуль.

Добавлено 03.03.2015

Способ аяксифицировать все веб-формы открывающиеся в модуле Auto-Dialog:

/**
 * Implements hook_form_BASE_FORM_ID_alter(): webform_client_form.
 */
function MODULENAME_form_webform_client_form_alter(&$form, &$form_state) {
  if ($form['#action'] == base_path() . 'system/ajax' || _autodialog_check_request()) {
    $form['actions']['submit']['#ajax'] = array(
      'callback' => 'MODULENAME_form_webform_client_form_ajax_submit',
      'wrapper' => $form['#id'],
    );
    unset($form['actions']['submit']['#pre_render']);
  }
}
 
/**
 * Ajax submit.
 */
function MODULENAME_form_webform_client_form_ajax_submit($form, &$form_state) {
  if (form_get_errors()) {
    return $form;
  }
  else {
    $webform = $form['#node']->webform;
    return check_markup($webform['confirmation'], $webform['confirmation_format']);
  }
}
Сделайте заказ с сайта и получите 10% скидку на услугу

Заказ услуги с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Заказать бесплатную SEO-консультацию

Запрос бесплатной SEO - консультации с сайта raybin.ru

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Письмо в компанию Райбин

Письмо в компанию RAYBIN

Нажимая на кнопку "Получить консультацию", я даю согласие на обработку персональных данных и соглашаюсь c условиями политики конфиденциальности
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.