EXTJS 4 - 全局异常监听器

时间:2011-11-04 11:21:50

标签: javascript extjs extjs4 extjs-mvc

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

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

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

现在我正在插入:

listeners: {
    exception: function(proxy, response, operation, eOpts) {
        if (response.status == '403')
            window.location = 'login';
    }
}

每个store's代理都有点矫枉过正。

有人可以很友善,让我知道如何为ExtJS和服务器之间的所有通信添加一个监听器?

我正在使用MVC应用程序架构,因此它可能是controller.jsapp.js中的一个班轮。

由于

3 个答案:

答案 0 :(得分:28)

在您应用的开头插入以下代码段。通过此 EVERY 响应,无论是来自商店还是表单还是......,都会被检查并重定向到登录页面。

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

答案 1 :(得分:7)

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

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

我还没试过,但如果你这样做了,你可以在这里发布更新吗?

答案 2 :(得分:6)

一个更完整的解决方案,它将是一个全能的是:

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.Proxy使用的Ext.data.Store, Ext.data.Model。这会处理store.load()model.save()等来电的例外情况。这应该是一个更完整的全能处理程序。

my blog post.

中查看更多详情