AJAX ссылки в Drupal 7- метод GET


93

Надеюсь, все уже знакомы с примером работы ajax-ссылок в Друпал 7. Кто еще не успел познакомится, добро пожаловать туда :) Стоит знать, что такие ajax запросы отправляются на сервер методом POST. Его особенность заключается в том, что он не кешируется в браузере пользователя. Оно и хорошо - страницу мы забрали из кеша, а некоторые новые данные подтягиваем с сервера обновленными. Но иногда может возникнуть необходимость кешировать и результаты ajax запросов. Для этого логично проводить отправку запроса методом GET. 

Вот небольшой фрагмент js-кода, который добавляет новый тип ajax-ссылок на Ваш сайт.
(function ($) {
    Drupal.behaviors.get_ajax = {
        attach: function (context, settings) {
            //Ищем все новые ajax-ссылки (ссылки с классом get-ajax).
            $('.get-ajax:not(.ajax-processed)').addClass('ajax-processed').each(function () {
                var element_settings = {};
                //задаем иконку загрузки.
                element_settings.progress = { 'type': 'throbber' };
                // путь загрузки и событие, по которому происходит загрузка ('click')
                if ($(this).attr('href')) {
                    element_settings.url = $(this).attr('href');
                    element_settings.event = 'click';
                }
                var base = $(this).attr('id');
                
                //Магия
                Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings);
                Drupal.ajax[base].options.type = "GET";
                var backup = Drupal.ajax.prototype.beforeSerialize;
                Drupal.ajax.prototype.beforeSerialize = function (element, options) {
                    if (options.type != "GET") backup.call(this, element, options);
                }
            });
        }
    };
})(jQuery);

Как этим пользоваться?

Все как и с обычными ajax-ссылками, только помимо библиотек drupal.ajax (файл misc/ajax.js) и jquery.form(файл misc/form.js) еще подключаем js-файл с этим кодом. И в качестве класса для "активации" ajax-ссылки указывать не use-ajax, a get-ajax.

Drupal Drupal 7 — Статьи пробраузер
Добавить комментарий
Может быть интересно

Закрываем порты docker контейнеров  в iptables. 
Обновление правил при перезагрузке сервера.

6

Данный скрипт поможет пересохранить файлы Excel в csv. Может быть полезно перед отправкой прайсов на хостинг для дальнейшей обработки

6

Порядок действий для установки Solr на сервере с Centos 7

4
Модуль Migrate это фреймворк для миграции (импорта) данных в Drupal из любых источников.
1

В операционной системе Windows, как и в других операционных системах, интерактивные (набираемые с клавиатуры и сразу же выполняемые) команды выполняются с помощью так называемого командного интерпретатора, иначе называемого командным процессором или оболочкой командной строки (command shell).

3