EXTJS 4 - 全局异常监听器
我有一种情况,我正在管理区域中的各种Ext Grid面板等向服务器发送ajax请求。如果没有任何活动,登录的用户将被注销。这是正常的5分钟。在这种情况下,服务器将重定向403发送回登录页面。 现在我插入:EXTJS 4 - 全局异常监听器
listeners:{
exception: function(proxy, response, operation, eOpts) {
if(response.status == '403')
window.location = 'login';
}
}
到每个商店的代理是有点矫枉过正。
有人可能会友好,让我知道我怎么可以添加一个监听器到ExtJS和服务器之间的所有通信?我正在使用MVC应用程序体系结构,因此它可能是controller.js或app.js中的单线程。谢谢
在您的应用程序的开始插入以下片段。有了这个EVERY响应,无论是来自商店还是表单或...,都会被检查并重定向到登录页面。
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
});
我还没有尝试过,但如果你这样做,你能在这里发布的更新?
@Sascha,nightwatch感谢你们俩。它工作正常。 – user798612
的更完整的解决方案,其特征在于,这将是一个全捕获是这样的:
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()
等呼叫的例外情况。这应该是一个更完整的通用处理程序。
Ext.util.Observable.observe不是Ext JS 5.x中的函数。你必须使用Ext.Ajax.on – jprism
不,你不需要,而且在Ext JS 5.0.1中'typeof Ext.util.Observable.observe'会输出''function“'' – EricLavault
更多细节很有趣,我们都在同一时间都在回答这个问题并且都给出了相同的答案。所以它必须是正确的。 – nightwatch
牛眼!非常感谢你 –
不错,非常感谢 – pylover