Drupal Association members fund grants that make connections all over the world.
NOTE: "#ahah" in forms was changed to "#ajax" in Drupal 7, so this post has been revised from D6 and D7 to just D6. Look in the Examples module (ajax_example) to find out more about AJAX in forms in D7.
Developers are often confused about AHAH in Drupal. The acronym usually refers to a subset of Ajax functionality. While Ajax usually involves returning an XML document, which needs to be parsed, in AHAH you simply return HTML ready to be loaded into a DOM element of choice.
The functionality was later incorporated into Drupal 6, and this is why the term AHAH now refers exclusively to the dynamic rendering of form elements in Drupal. If you are just looking to load some normal content (as opposed to form elements) dynamically, then AHAH, in this Drupal sense, is not the right tool for you - have a look at section 6 of this guide, Ajax in Drupal using jQuery. In fact, the difference that originally led to the coining of the term AHAH - that it didn't involve XML, whereas Ajax did - is no longer considered significant and it's pretty much all referred to as Ajax these days.
First, it creates a wrapper to hold all of the AHAH elements, including the button itself. Then it creates a special wrapper for the choices themselves; all existing choices are added inside this wrapper. Then this wrapper is referenced in the #ahah property of the button element ($form['choice_wrapper']['poll_more']). In effect, what the #ahah property is saying here is "When a user clicks me (remember the default event is 'click'), fetch new elements from the path 'poll/js', stick them into the div with the id of 'poll-choices', replacing the existing contents of that div (as opposed to appending to them, which is another option), and use the 'fade' effect when making the switch". Another option would be, for example, to use a different effect instead of 'fade' or to have the behavior bound to the change event of a dropdown element instead of the click event of a button. In this case, you would add the 'event' parameter to your '#ahah' property and set its value to 'change'.
The code in misc/ahah.js looks after the jQuery side of things, binding the desired behavior to your element and making the Ajax request to your specified callback. Now you need to create your callback function and submit handler and make sure your form-building function is built correctly. See the subsection Adding dynamic form elements using AHAH for an explanation of how to avoid the many pitfalls you could fall into at this juncture.