2013-06-28 3 views
4

я немного застряли с Ajax/HTTP обработки исключений: Я пытаюсь справиться 401 исключения во всем мире в ExtJS, и пытаюсь использовать следующий код, чтобы сделать это:ExtJS обработки ответов HTTP глобально

Ext.Ajax.on('requestexception', function (conn, response, options) { 
    if (response.status === 401) { 
     log.console = '401 recieved'; 
    } 
}); 

Он работает нормально и обрабатывает 401, НО только когда вы явно делаете Ext.Ajax.request(). Он не обрабатывает магазины ajax ... Итак, возникает вопрос: могу ли я обрабатывать ВСЕ 401 http ошибки, поступившие в мое приложение? Благодаря!

+0

какая версия ExtJS вы используете? Я сделал это в своем приложении, но код отличается для Extjs 4 и 3 – Reimius

+0

@Reimius, теперь я использую Ext JS ver. 4.1. Считаете ли вы, что такая базовая вещь может быть переписана/переработана? –

+0

Мы переопределяем один из методов в Ext.data.Connection для нашего приложения, все, что использует ajax, наследуется от этого класса. Я приведу пример, если я получу время здесь. – Reimius

ответ

2

Вам понадобится выполнить обработку ошибок для любых классов Ext, которые вы используете, которые используют соединения Ajax. Некоторые из них могут включать Ext.data.Connection, Ext.data.proxy.Ajax и Ext.form.action.Action.

Например, с Ext.data.proxy.Ajax, вы можете переопределить класс, чтобы добавить слушателя requestexception:

Ext.define('MyApp.override.AjaxProxy', { 
    override: 'Ext.data.proxy.Ajax', 
    constructor: function(config) { 
     this.callParent(config); 
     this.on('requestexception', MyApp.utils.Utils.handle401Error); 
    } 
}) 
+0

Да, я считал такое решение ... просто подумал, что что-то вроде обычного AJAX. Спасибо за ваш ответ, но это действительно полезно! –