首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

替Ext.form.Action.Submit增强处理复杂返回json对象

2012-11-23 
为Ext.form.Action.Submit增强处理复杂返回json对象Ext.form.Action.Submit.handleResponse只能处理形如{s

为Ext.form.Action.Submit增强处理复杂返回json对象
Ext.form.Action.Submit.handleResponse只能处理形如{success:ture,info:''}的json返回数据,与SpringMVC结合使用多有不便,只能如此处理:

HashMap<String,String> model = new HashMap<String,String>();model.put("success", "true");model.put("info", "保存成功");return new ModelAndView("/app/customer/list",model);

很是雅观,鉴于前面改写过Ext.form.Action.Submit.run方法,不妨也改写一下Ext.form.Action.Submit.handleResponse,让其支持复杂一点的json数据
Ext.override(Ext.form.Action.Submit,{    handleResponse : function(response){    var opts = this.options;        if(this.form.errorReader){            var rs = this.form.errorReader.read(response);            var errors = [];            if(rs.records){                for(var i = 0, len = rs.records.length; i < len; i++) {                    var r = rs.records[i];                    errors[i] = r.data;                }            }            if(errors.length < 1){                errors = null;            }            return {                success : rs.success,                errors : errors            };        }        //在options中配置root参数,root:'a.b.c'        if(opts.root){        var l = opts.root.split('.');        var o =  Ext.decode(response.responseText);        Ext.each(l,function(n){            if(o[n])                o=o[n];        });        return o;        }        return Ext.decode(response.responseText);    }});

Ext,真的可以随心所欲的

热点排行