我在ExtJs中有一个Web应用程序。我需要注销,当Ajax请求的响应状态为401时。我使用此代码:
Ext.Ajax.on('requestexception', function(connection, response, options){
if (response){
if (response.status == 401 && myApp.auth.userInfo != null){
myApp.auth.logout();
}
}
});
它有效,但是当我有几个请求myApp.auth.logout();多次打电话,我无法再次登录,重新加载页面后我可以登录。是否有任何请求过滤器或某些方法使Ext.Ajax.on(' requestexception')同步,该函数myApp.auth.logout();只打了一次电话?
答案 0 :(得分:1)
您可以使用single: true
,这样您的处理程序将只处理事件的下一次触发,然后自行删除。
Ext.Ajax.on('requestexception', function (connection, response, options) {
response && response.status == 401 && myApp.auth.userInfo != null && myApp.auth.logout();
}, null, {
single: true
});
答案 1 :(得分:1)
尝试添加此功能。这样可以确保不执行成功和失败回调,应用程序应该停止(可能以下请求命中您的覆盖是由于级联执行失败/回调),然后执行logout
Ext.Ajax.on('requestexception', function(connection, response, options){
if (response){
if (response.status == 401 && myApp.auth.userInfo != null){
delete options.failure;
delete options.callback;
myApp.auth.logout();
}
}
});