Надеюсь, все уже знакомы с примером работы 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.
Комментарии
Добавить комментарий