Please remove the sarcasm from my previous post about Ajax. I won’t go so far as to say that I have reversed my opinion, but I will admit that I was focusing on the wrong part of Ajax.
I am currently building something that uses Ajax in some pretty basic ways. I still think that manipulating the DOM in response to user events is pretty gross, but I have found something to like in Ajax. What I like is the pseudo web services that naturally arise when you build something with Ajax in mind. You end up with servlets (or CGIs or whatever) that handle a single piece of functionality and return XML. These small services can easily be turned into a cohesive XML API or SOAP interface. When you’re performing atomic actions in response to a user interface behavior and then updating the interface to reflect that change, it’s almost like writing a desktop app. And that’s precisely what I’ve always strived for in writing webapps, though historically I’ve focused more on making the back-end more app-like by building a framework around Struts.