XML HTTP Requests (CallBacks)

Classic ASP demo files included.
ASP.NET is directly compatible with this - just paste the lines of code into your .NET project!

Recently there has been a bit of interest in a "new" technique for doing XML HTTP requests. Now that all browsers support this, it is a good time to use it. ASP.NET 2.0 will support this natively - ~1 line of code required, but with the attached JavaScript file, we can use it in Classic ASP too.

So what is it?
XML HTTP Requests, (which Microsoft is now calling CallBacks) is where a piece of JavaScript can call a server side (ASP/VBScript) page to obtain a result - without the user knowing. I see it used a lot now in populating the next level in a series of linked drop down lists, rather than pre-loading all combinations into Javascript objects and using more code to pull out the ones we want.

Currently many server side fetches by using Javascript to pop up a little window, run a page, then do a window.opener.document….value = x; to return our value. This is ugly in a few ways:
1. Requires quite a few lines of code
2. User sees a little window popup briefly
3. We can not post the data to the server side, return data can only be dropped back to the opener's vars - if still present - or call an existing function.
4. Or we preload all data in Javascript objects which makes the page very large.

Attached is a sample app which I have put together.
xmlRequest.js is the include library which does the work.
xmlRequestTest.asp is a test page to show it working. This just calls the xmlRequest function and has a function waiting for the server side to call back upon.
xmlRequestServer.asp is a test server side page - this is the bit which does your DB lookups, calcs etc and returns the results (as javascript commands).

This solution only uses a few lines of code and is fast to run (much faster again in .NET). There is no negatives to using it, but read my comments in the files carefully. This callback is asynchronous, so once the call has been made, you should not do any more processing until your results are returned. Have the resulting commands kick off the next stage in your processing - see the demo for this.



This command will GET the URI specified and execute (eval) the resulting text.
I have added error handling in case the resulting text is an ASP error or just contains a plain Javascript error.
The request also has caching prevention included.
Supports all 3 methods of calling the XMLRequest object (Internet Explorer 5.5+, Mozilla 1.7+?, Firefox 1.0+, Konqueror, Safari-X and Opera 7.6+)


Based on techniques by Jim Ley - http://jibbering.com/2002/4/httprequest.html

Hunter Beanland
hunter @ beanland.net.au