Перейти к основному содержанию

ajax

Создание собственной ajax-команды

Отправлено said от ср, 11/30/2016 - 10:04

Собственная ajax-команда в drupal 7 создается с помощью следующего кода, помещенного в js скрипт:

(function($, Drupal) {
  Drupal.ajax.prototype.commands.afterAjaxCallbackFilter = function(ajax, response, status)
  {
    alert(response.data);
  };
}(jQuery, Drupal));

После этого в ajax-обработчике запроса эта команда используется следуюзим образом.

$commands[] = array (
  'command' => 'afterAjaxCallbackFilter',
  'data' => 'some data',
);

 

Теги

Ошибка при прерывании ajax-запроса

Отправлено said от пт, 10/07/2016 - 16:07

Чтобы предотвратить появление алерта с сообщением об ошибки использовать:

(function ($) {
  Drupal.behaviors.disableAlerts = {
    attach: function(context, settings) {
      window.alert = function(text) {
        if(typeof console != "undefined") {
          console.error('Error: ' + text);
        }
        return true;
      };
    }
  };
}(jQuery));

 

Теги

Отправка ajax-запроса из javasacript

Отправлено said от пт, 04/01/2016 - 11:38

Динамическое добавление ajax-обработчика на DOM-элемент

// Параметры запроса
var  element_settings = {
    url: path_request_path,
    event: 'click',
};
// Элемент на которые вешаем обработчик
base = $(this).attr("id");

// Создаем ajax объект
Drupal.ajax[base] = new Drupal.ajax(base, $(this), element_settings);

// Имитируем событие, чтобы выполнить ajax запрос
$(this).trigger("click");

Если нужно отправить запрос не привязывая его к елементу, то так

Теги

Назначение CTools modal обработчика на ссылку загруженную через ajax

Отправлено said от сб, 02/20/2016 - 17:29

В штатном режиме ссылка на открытие модального окна выводится так

print ctools_modal_text_button($current_city, 'change-region', '', 'ctools-modal-select-city-style');

это отлично работает, если нам заранее известно где в DOM дереве эта ссылка находиться

Если эту ссылку вставить с помощью jQuery уже после того, как страница отрендерилась, обработчик загрузки модального окна нужно вешать вручную. Вот так

Теги

recaptcha и ajax_comment

Отправлено said от сб, 02/20/2016 - 16:29

Столкнулся с проблемой при которой recaptcha не отображается повторно после отправки ajax формы при возникновении ошибок валидации.

Дело оказалось в том, что recaptcha навешивается в теге head страницы при событии window.onload, ну и естественно при ajax запросе повторно не срабатывает. В качестве решения подгружаю скрипт рекаптчи в форме. Таким образом скрипт загружается при каждом рендере формы.

Теги