this worked for me in chrome, firefox and IE10, and will probably work in others as well:
(function(){
var op=XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open=function(method, url, async){
this.url=url;
this.method=method;
return op.call(this, method, url, async);
};
}());
and to make sure it worked:
//demo:
var a = new XMLHttpRequest( );
a.open("GET", "/", false);
a.send();
alert( a.url +"\n\n" + a.responseText);
now, every time you call open(), it memorizes the url and method onto the ajax instance. Since ajax itself is an object, there's no need to wrap an additional object just to tack-on a few properties. I can't think of any downsides to wrapping the ajax object non-obtrusively like this, but maybe someone on here knows of a potential gotcha.