天天看點

Extjs6關于Ajax和form表單送出以及store請求session逾時的處理方法

對于Store的處理

每個store配置的時候,配上load監聽,加載時處理:
           
usrStore : {
    model : 'App.model.Usr',
    autoLoad : false,
    proxy : {
        type : 'ajax',
        url : 'usr/getUsrs.do',
        reader : {
            rootProperty : 'data'
        }
    },
    listeners:{
        load : 'onStoreLoad'
    }
}
onStoreLoad : function(store, records, successful, operation, eOpts) {
    if (!successful) {
        //直接提示系統維護
    } else {
        this.validSessionByStore(this, operation);
    }
},
validSessionByStore:function(comp,operation){
    var resp = operation.getResponse();
    if (resp) {
        var rst = Ext.decode(resp.responseText || {});
        if (!rst['session']) {//session逾時
            this.reLogin(comp);//彈出登入框,重新登入
            return false;
        }
    }
    return true;
}
           

封裝官方基本的success和failure兩個方法

不管是ajax還是form的submit都有success和failure兩個回調方法,是以要對這兩個回調進行瘋狂,友善ajax和submit的調用:
           
success:function(data,comp,_success,_failure,ctl){
        if (!data['success']) {//失敗
            this.failure(data, comp,_failure);
        } else if (data['session']) {//成功
            if (Ext.typeOf(_success) === 'function') {
                _success(data, comp);
            }
        } else { //session逾時
            this.failure(data, comp,_failure);
            this.reLogin(comp);//彈出登入框,重新登入             
        }
    },
    failure:function(data,comp,_failure){
        if (Ext.typeOf(_failure) === 'function') {
            _failure(data, comp);//執行自定義失敗該執行的方法
        } else {
            //直接提示系統維護
        }
    },
           

對于Ajax的處理

ajax : function(uri ,params, success, failure ,ctrl) {
        var me = this;
        return Ext.Ajax.request({
            url : uri,
            params : params,
            async : false,
            success : function(response, opts) {
                var result = Ext.decode(response.responseText) || {};
                me.success(result ,ctrl,success,failure);
            },
            failure : function(response, opts) {
                me.failure(response,ctrl,failure);
            }
        });
    },
           

對于Form送出的submit的處理

getFormSubmitCfg : function(success, failure, params) {
    var me  =this;
    return {
        params : params,
        submitEmptyText : false,
        success : function(form, action) {
            me.success(action.result ,form,success,failure);
        },
        failure : function(form, action) {
            me.failure(action.result ,form,failure);
        }
    };
}
           

繼續閱讀