это работало для меня в Chrome, Firefox и Internet Explorer 10, и вероятно, будет работать в других, а также:
(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);
};
}());
и убедиться, что он работал:
//demo:
var a = new XMLHttpRequest();
a.open("GET", "/", false);
a.send();
alert(a.url +"\n\n" + a.responseText);
сейчас, каждый раз, когда вы call open(), он запоминает url и метод в экземпляре ajax. Поскольку ajax сам по себе является объектом, нет необходимости обертывать дополнительный объект только для того, чтобы применить несколько свойств. Я не могу придумать какие-либо недостатки, чтобы обернуть объект ajax ненавязчиво, как это, но, возможно, кто-то здесь знает о потенциальной добыче.
Вы должны обернуть запрос объектом. Такие структуры, как jQuery, делают это за вас. См. Соответствующий http://stackoverflow.com/questions/921198/get-request-url-from-xhr-object – megawac
a.open (a.method = 'POST', a.url = 'http: // localhost/test ', правда); оповещения (a.url); – dandavis
К сожалению, я не всегда буду контролировать, как называется open. Это для библиотеки, которую разработчики могут включать в свои сайты. Единственный вариант, о котором я мог думать, это перегрузка открытого метода, но я надеялся, что есть встроенная способность захватить эти свойства – 9point6