Frank W. Zammetti
About five years ago I worked on a web app project where one of the primary requirements was that it should
look, work and feel like a Windows-based fat client.
Now, ignoring the question of why it was not in fact done
as a Windows-based fat client in the first place, that can be a rather tough requirement in the world of web
development, certainly it was five years ago when not very many examples of such a thing existed.
As a result of a number of proof-of-concepts, I stumbled upon some techniques for doing things that were at the
time rather atypical approaches to web development.
The end result was an application that, to this day, many
people cannot even tell is web-based, aside from the fact that you access it with a browser!
Little did I know that only a few years later the basic concepts behind what I had done would re-emerge in the
world as something called Ajax.
Ajax is a term coined by the folks at Adaptive Path and is shorthand for
This just goes to show, patenting every idea you ever have is indeed a good way to riches!
If only I would have
thought what I did was anything special!
But I digress…
Google is doing it.
So are many others.
But what is it?
In a nutshell, the Ajax concept, which is not a concrete
technology implementation but rather a way of thinking and a set of techniques that go along with the mindset,
is concerned with the idea that rebuilding a web page for every user interaction is inefficient and should be
For instance, say you have a web page with two <select> elements on it.
You want the contents of the second
one to change when a selection is made in the first.
Something like this is not uncommon and there are a
number of ways you can handle it.
The Ajax approach to this is to only redraw a small portion of the web page, namely the contents of the second
The Ajax concept is based around something called the XMLHttpRequest component.
All you Microsoft haters
get ready to yell because this was a Microsoft creation! Yes, Microsoft got something right, and did so before
Microsoft first implemented the XMLHttpRequest object in Internet Explorer 5 for Windows as
an ActiveX object (ok, so they didn’t get it QUITE right!). The Mozilla project later implemented a native
version with the release of Mozilla 1.0, and by extension, Netscape 7. Apple has now done the same as of Safari
Opera is now following suite with their version 7.60.
All released versions of Firefox contain it as well.
Let’s just cut to the chase and get to some code, shall we?
The XMLHttpRequest component, being a client-side component, must be instantiated via scripting before it
can be user.
var req = new ActiveXObject("Microsoft.XMLHTTP");
…for any other browser, use:
var req = new XMLHttpRequest();