2013-11-11 3 views
0

Возможно ли получить свойства запроса (в идеале до его отправки) из объекта XMLHttpRequest.получить свойства запроса от объекта XMLHttpRequest

Например, после вызова:

var a = new XMLHttpRequest(); 
a.open('POST', 'http://localhost/test', true); 

как бы я затем получить метод и URL действия от объекта?

+0

Вы должны обернуть запрос объектом. Такие структуры, как jQuery, делают это за вас. См. Соответствующий http://stackoverflow.com/questions/921198/get-request-url-from-xhr-object – megawac

+0

a.open (a.method = 'POST', a.url = 'http: // localhost/test ', правда); оповещения (a.url); – dandavis

+0

К сожалению, я не всегда буду контролировать, как называется open. Это для библиотеки, которую разработчики могут включать в свои сайты. Единственный вариант, о котором я мог думать, это перегрузка открытого метода, но я надеялся, что есть встроенная способность захватить эти свойства – 9point6

ответ

1

это работало для меня в 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 ненавязчиво, как это, но, возможно, кто-то здесь знает о потенциальной добыче.

Смежные вопросы