Javascript EXTJS 4-全局异常侦听器

Javascript EXTJS 4-全局异常侦听器,javascript,extjs,extjs4,extjs-mvc,Javascript,Extjs,Extjs4,Extjs Mvc,我的情况是,我从管理区域的各种Extgridpanel等向服务器发出ajax请求 如果5分钟内没有活动,则登录用户将注销,这是正常的 在这种情况下,服务器将重定向403发送回登录页面 Ext.Ajax.on('requestexception', function (conn, response, options) { if (response.status === 403) { window.location = 'login'; } }); 现在我插入一个:

我的情况是,我从管理区域的各种Ext
gridpanel
等向服务器发出
ajax
请求

如果5分钟内没有活动,则登录用户将注销,这是正常的

在这种情况下,服务器将重定向
403
发送回登录页面

Ext.Ajax.on('requestexception', function (conn, response, options) {
    if (response.status === 403) {
        window.location = 'login';
    }
});
现在我插入一个:

listeners: {
    exception: function(proxy, response, operation, eOpts) {
        if (response.status == '403')
            window.location = 'login';
    }
}
到每个
商店的
代理,这有点过分了

有人能告诉我如何在ExtJS和服务器之间的所有通信中添加一个侦听器吗

我使用的是MVC应用程序架构,因此它可能是
controller.js
app.js
中的一行程序


谢谢

在应用程序的开头插入以下代码片段。使用此将检查每个响应,无论是来自商店、表单还是…,并将其重定向到登录页面

Ext.Ajax.on('requestexception', function (conn, response, options) {
    if (response.status === 403) {
        window.location = 'login';
    }
});

我不确定这是否会捕获所有ajax请求,但假设您使用AjaxProxy与服务器进行所有通信,它应该可以工作: 在Ext.Ajax单例中处理“requestexception”事件 像这样的

Ext.Ajax.on('requestexception', function(conn, response, options, eOpts) {
    //your error handling here
});

我还没有尝试过,但如果你尝试过,你能在这里发布更新吗?

一个更完整的解决方案,它将是一个包罗万象的解决方案,如下所示:

Ext.util.Observable.observe(Ext.data.Connection, {
    requestexception: function(conn, response, options) {
        if(response.status == '403')
            window.location = 'login';
    }
});
这是因为基础类
Ext.data.Connection
不仅在
Ext.Ajax
中使用,而且在
Ext.data.Store、Ext.data.Model
中使用
Ext.data.Proxy
。这将处理诸如
store.load()
model.save()等调用的异常。这应该是一个更完整的全面处理程序


请参见

中的更多详细信息。有趣的是,我们两人同时回答了这个问题,并且给出了相同的答案。所以它一定是正确的。靶心!非常感谢。extjs5.x中没有Ext.util.Observable.Observable函数。您必须使用Ext.Ajax.on不可以,在Ext JS 5.0.1
typeof Ext.util.Observable.observed.observed中将输出
“函数”