Drupal 5: Drupal, AJAX, and jQuery made simple

Here's a simple, minimal implementation of AJAX in Drupal using jQuery.

First create a menu item callback.

<?php
function MYMODULE_menu() {
  $items = array();
  $items[] = array(
    'path' => 'ajax',
    'title' => t('AJAX'),
    'type' => MENU_CALLBACK,
    'callback' => 'MYMODULE_callback_ajax',
    'access' => true,
  );
  return $items;
}
?>

Next create the callback function. To test the menu item and callback function, go to http://[YOURSITE]/ajax; you should get the text "wee!" without any theming.

<?php
function MYMODULE_callback_ajax() {
  echo 'wee!';
  die;
}
?>

Next create a page that has a button on it with an ID of "ajaxButton". The following jQuery will add an onClick event to the button.

$(document).ready(function(){
  $('#ajaxButton').click(function(){
    $.ajax({
      type: 'GET',
      url: '/ajax',
      success: function(html){
        alert(html);
      }
    });
  });
});

The jQuery binds a function to the onClick event, with makes the Ajax call to the URL, which simply returns the text "wee!", which is then echoed in a javascript alert box.