我遇到的情况是我从各种Ext ajax
等向服务器发出gridpanel
个请求。在管理区域。
如果没有活动,登录用户将被注销。 5分钟这是正常的。
在这种情况下,服务器会将重定向403
发送回登录页面。
现在我正在插入:
listeners: {
exception: function(proxy, response, operation, eOpts) {
if (response.status == '403')
window.location = 'login';
}
}
每个store's
代理都有点矫枉过正。
有人可以很友善,让我知道如何为ExtJS和服务器之间的所有通信添加一个监听器?
我正在使用MVC应用程序架构,因此它可能是controller.js
或app.js
中的一个班轮。
由于
答案 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()
等来电的例外情况。这应该是一个更完整的全能处理程序。