1. 程式人生 > >Extjs6關於Ajax和form表單提交以及store請求session超時的處理方法

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);
        }
    };
}