I have been spending the last few weeks working in an Ajax environment and whilst I am no Ajax expert there are some observations I feel compelled to make.
  1. The benefits are substantial for the end user of your software (interaction, features offered...) so it's worth doing.
  2. It's a pain to debug because you are spreading your code across multiple locations and languages.
  3. It's worth using a templating system (e.g. HTML::Mason) when writing web apps, with or without Ajax. It makes live a lot easier when generating mark up.
  4. The Ajax paradigm leads to a different architecture at the back end. Something like this:
    1. A module generates
      1. Some Basic HTML and place holders for data, but no data
      2. Lots of Javascript (but remember to use an Ajax library such as YUI)
    2. This first page loads and makes an Ajax call
    3. A second module on the server responds to your Ajax call and supplies data (or whatever)
    4. The web page is populated by the Javascript via the DOM and and can be used.
    5. The user interacts with your Javascript (and forms etc.)
    6. Your Javascript makes an Ajax call
    7. goto 3
So you can see what I mean about things being spread around. It's a lot harder to work with that a traditional form based approach.