Использование Ajax в Drupal.


Если вы разрабатываете свой модуль для Drupal, то использование Ajax поможет улучшить взаимодействие пользователя с вашими страницами, т.к. обмен данными с сервером здесь производится без перезагрузки страниц, а это значит, что скорость работы последних будет значительно выше. Ajax позволяет избавить пользователя от утомительного ожидания «когда же, наконец, эти данные загрузятся».

Алгоритм создания нужных функций включает в себя следующие этапы:

1. Реализация hook_menu(), чтобы «зарегистрировать» алиас-путь к функции, обрабатывающей Ajax-запрос.

2. Создание функции, обрабатывающей Ajax-запрос.

3. Создание JS-кода, который делает запрос к серверу и обрабатывает ответ.

Рассмотрим простой пример использования Ajax в Drupal. Допустим, нам необходимо передать на сервер одно из двух значений и, в зависимости, от него, вернуть ‘1’ или ‘2’ (первое или второе значение). Условно назовем модуль «my_module».

1. Реализация hook_menu(). В файле нашего модуля my_module.module создаем функцию my_module_menu().

1
2
3
4
5
6
7
8
function my_module_menu(){
    $items['ajax-numbers'] = array(
        'access callback' => TRUE,
         'page callback' => 'my_module_menu_ajax_callback',
         'type' => MENU_CALLBACK
    );
    return $items;
}

Здесь мы «регистрируем» алиас «ajax-numbers», при обращении к которому будет вызываться функция my_module_menu_ajax_callback().

2. Создание функции, обрабатывающей Ajax-запрос.

1
2
3
4
5
6
7
8
9
10
11
12
function my_module_menu_ajax_callback(){
     //достаем значение нашей переменной из массива $_POST.
     $number = $_POST['number'];
     //в зависимости от присылаемого значения определяем ответ.
     if($number == 1){
        $answer = 1;  
     }else{
        $answer = 2; 
     }
     //отдаем ответ
     echo $answer;
}

3. Создание JS-кода. Включаем в html-код в нужное место следующие строки (код может быть помещен в определенную функцию javascript).

1
2
3
4
5
6
7
8
9
<script>
//определяем путь к функции нашего модуля
url = Drupal.settings.basePath + "ajax-quotes";
//отправляем наши данные методом post (отправляем значение number = 1).
$.post(url, { number: '1'},function(data) {
      //выводим ответ сервера методом alert.
      alert(data);
});
</script>

В результате работы нашего скрипта должно появиться всплывающее окно со значением 1. Не забудьте почистить кэш при добавлении новых функций в файлы вашего модуля.

Случайные посты

Категория: Ajax, Drupal

Оставить комментарий


Яндекс.Метрика