There was an article published recently at eggheadcafe about Building an Anthem.NET [AJAX] Autosuggest Textbox. I didn't bought the AJAX idea quite yet, but I was quite interested when reading this arcticle. There is a good overview how AJAX evolved, but the most intersting point for me was in the arcticle mentioned Anthem.NET AJAX framework.
Anthem.NET is a FREE, cross-browser AJAX toolkit for the ASP.NET development environment that works with both ASP.NET 1.1 and 2.0. It was developed by Jason Diamond when he had the great idea to encapsulate all the hard grunt work of making a regular Web Form control use AJAX and package it into new Anthem Controls. These controls behave just like regular Web Form controls, except they have AJAX built into them!
Anthem is actually really simple. When you trigger a call back from your page, the XMLHttpRequest object is used to POST back to the page. Jason tried, as much as possible, to emulate what a normal POST request would look like. This means that the request contains the values for all of the form controls on the page including the ASP.NET specific hidden field like __VIEWSTATE. As far as the page on the server is concerned, a normal post back is occuring. The page fires its Init event, transfers state into the controls, fires its Load event, performs validation, etc. He even let it go through its normal rendering process.
After the page on the server does its thing, Jason captures the HTML of all the "Anthem" controls on the page and "return" that to the client which uses innerHTML to update those controls right there in the browser. This is, admittedly, a hack but it works surprisingly well. And, for the most part, you can just pretend you're working with "normal" ASP.NET pages and controls without having to learn a whole new set of APIs.
You can see why it's called AJAX-like framework. Whole form processing is made at server side. The is not discrete server "page" that just takes the essential parameters, does the minimum amount of processing and returns the minimum amount of data as "Fundamentals of AJAX" from Apress suggests. But there is a simple way to control the AJAX postback processing on server with Anthem.Manager.IsCallBack in your Page_load method, and it's enough for me. I can use AJAX features and UI extensions without learning a whole new API just by using old known web forms.
There are more ASP.NET 2.0 AJAX frameworks available some of them comercial, but some of them also free. I'm planning to review some of them and get back to you with details in some feature posts.