ExtJs Ajax请求异常同步

标签 extjs

我有一个 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();只调用一次?

最佳答案

尝试添加这个。这可以确保成功和失败回调不会被执行,您的应用程序应该停止(也许以下请求击中您的覆盖是由于失败/回调级联执行),然后执行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();
        }
    }
});

关于ExtJs Ajax请求异常同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29512092/

相关文章:

javascript - EXTjs ViewConfig 行类

javascript - ExtJS 6 自定义用户界面

extjs - 为什么在initComponent中使用Ext.apply

Javascript 对象数据未返回正确的值

javascript - ExtJs 形成不同绑定(bind)的多个按钮

javascript - D3.js 或 EXT js 用于数据可视化,为什么?

javascript - ExtJS 4.2.1 - 向任何弹出菜单添加顶部箭头

Extjs 在右键单击时创建上下文菜单

css - ExtJS 4 使用类似 float :right in a xtype:toolbar 的东西

javascript - 从商店中删除多条记录的最佳方法是什么?扩展程序