Я думаю, что вы можете включить обработчик обратного вызова onException
с параметрами запроса:
new Ajax.Request('?service=example', {
parameters : {tags : 'exceptions'},
onSuccess : this.dataReceived.bind(this),
onException : function(request, ex) { // react somehow }
});
Чтобы сделать это на глобальном уровне, обработчик обратного вызова может быть зарегистрирован с помощью объекта Ajax.Responders
:
Ajax.Responders.register({
onException: function(request, ex) {
// react somehow
}
});
Первым аргументом будет объект Ajax.Request
, который вызвал обратный вызов.
P.S. / FYI: ваше исключение скрывается этим кодом в источнике прототипа :
dispatchException: function(exception) {
(this.options.onException || Prototype.emptyFunction)(this, exception);
Ajax.Responders.dispatch('onException', this, exception);
}
Вот как правильно реализовать обратный вызов onException.
Ajax.Responders.register({
onException: function(request, exception) {
(function() { throw exception; }).defer();
}
});
Как указано здесь: https://stackoverflow.com/a/2606239/147349