Здравствуйте.
Возникла проблема. Есть форма, которая валидируется при помощи html5 api, в частности - checkValidity. Соответственно, на сервер шлется post-запрос, и нужно получить callback, чтобы, в зависимости от результата запроса, решить, отправлять форму, или нет. Проблема заключается в том, что запрос checkValidity не поддается перехвату вообще!
Есть такой код, который работает со всеми post-запросами, кроме того, который нужен.
var XMLHttpListener = new Object();
XMLHttpListener.tempOpen = XMLHttpRequest.prototype.open;
XMLHttpListener.tempSend = XMLHttpRequest.prototype.send;
XMLHttpListener.callback = function () {
// кэллбэк
}
XMLHttpRequest.prototype.open = function(a,b) {
if(!a) var a='';
if(!b) var b='';
XMLHttpListener.tempOpen.apply(this, arguments);
XMLHttpListener.method = a;
XMLHttpListener.url = b;
if(a.toLowerCase() == 'get') {
XMLHttpListener.data = b.split('?');
XMLHttpListener.data = XMLHttpListener.data[1];
}
}
XMLHttpRequest.prototype.send = function(a,b) {
if(!a) var a='';
if(!b) var b='';
XMLHttpListener.tempSend.apply(this, arguments);
if(XMLHttpListener.method.toLowerCase() == 'post') XMLHttpListener.data = a;
XMLHttpListener.callback();
}
Вопрос: есть ли более универсальный способ перехвата ajax-запросов, позволяющий реализовать вышеописанное? К сожалению, вариант if(checkValidity()) не прокатит, т.к. придется влезать в ядро чужого плагина.