AJAX в drupal 7 простейшее приложение

В наше время уже не обойтись без ajax на сайте..
Это и красиво и удобно и более целесообразно чем постоянно грузить непонятные страницы..
Как же создать ajax приложение в drupal 7 ?
Необходимо создать модуль для drupal, который даст возможность доставить данные. Для упрощения данные у нас меняться особо не будут (за исключением того, что в них будет GET параметр передаваемый странице).
Создаём папку nloader в папке /site/all/modules
Это будет папка нашего приложения.
В ней создаём файл описания модуля nloader.info:

name = Node loader
description = Allows load node's content using AJAX
core = 7.x

Теперь сам модуль. Это самый низы (можно сказать плинтус) поэтому будет всего 2 функции.
Файл nloader.module :

<?php
function nloader_menu() {
    // страница articles_ajax
    $items['articles_ajax'] = array(
      'page callback' => 'nloader_output', //функция для вывода данных
      'type' => MENU_CALLBACK,
      'access arguments' => array('access content'),
    );
    return $items;
}
function nloader_output() {
    $nid = $_GET['nid']; // получаем переменную
    // формируем данные
    $data = array(
      'title' => t('Your title'),
      'body' => t('Your body'),
      'nid' => $nid,
    );
    drupal_json_output($data);
}
?>

Думаю тут всё должно быть ясно. Данные формируем в формате json.
Теперь если вы пройдёте по адресу http://ваш_сайт/articles_ajax?nid=123 то увидите строку вроде:

{"title":"Your title","body":"Your body","nid":"123"}

Запросим её при помощи ajax. Пользоваться буду jquery, ибо так проще и быстрее.

$(document).ready(function () { 
  $.ajax({ 
    url: 'http://localhost/drupal/articles_ajax?nid=123', 
    dataType: "json", 
      success: function(data) { 
        console.log(data);
        console.log(data.title);
      } 
  });
});

Теперь в консоли разработчика можно увидеть такое:

Object { title="Your title", body="Your body", nid="123"}
Your title
Просмотров:   4916

Комментарии

пт, 07/03/2015 - 12:26
Николай

Не работает ajax при отправке sabmit в раскрытых фильтрах, использую модуль better_exposed_filters

Добавить комментарий

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Введи эти символы. Ато роботы одолели!