`
liguiking
  • 浏览: 30753 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类

为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,真的可以随心所欲的
分享到:
评论

相关推荐

    Ext form_load

    在Ext JS中,`Ext.form_load`涉及到的主要知识点是FormPanel的数据加载机制,这包括了对FormPanel的form对象、BasicForm、doAction方法、Ext.form.Action对象以及JsonReader的使用。以下是对这些概念的详细解释: 1...

    Ext Js权威指南(.zip.001

    7.1.5 为element对象提供加载功能:ext.elementloader / 295 7.1.6 为组件提供加载功能:ext.componentloader / 296 7.2 代理 / 299 7.2.1 代理概述 / 299 7.2.2 基本的代理:ext.data.proxy.proxy / 300 7.2.3...

    EXT异步提交FORM表单

    4. **处理服务器返回结果**:当服务器返回数据时,通常会以JSON格式返回,因此需要解析这些数据并进行相应的业务逻辑处理。 ```javascript var result = Ext.util.JSON.decode(response.responseText); ``` ###...

    ext 的ppt ext 的ppt ext 的pptext 的pptext 的ppt

    表单的提交可以通过`form.getForm().submit()`实现,可以设置回调函数处理成功或失败的情况,例如: ```javascript form.getForm().submit({ success: function(form, action) { Ext.Msg.alert(' 成功 ', action....

    Ext登陆login

    9. **JSON数据交互**: 服务器返回的响应通常是JSON格式,我们可以解析这些数据以确定登录是否成功。 10. **表单验证**: 在提交表单之前,可以使用`form.validate()`来检查所有字段是否有效。ExtJS提供了多种验证...

    Ext js 批量上传

    在Ext JS中,我们可以使用`Ext.Ajax`或`Ext.form.action.Submit`来实现这一点。批量上传时,我们可能需要对每个文件进行单独的提交,或者将所有文件打包成一个大的多部分表单数据包发送。 配置文件在批量上传中也...

    EXT的3中提交方式

    - `Ext.util.JSON.decode(response.responseText)`用于将服务器返回的JSON字符串转换为JavaScript对象。 - 通过判断`responseArray.success`的值来确定操作是否成功。 #### 三、同步提交 除了上述两种异步提交...

    ExtJs4.0 表单提交Demo

    - **监听提交事件**:使用`form.submit()`方法触发表单提交,传入一个包含回调函数的对象,处理成功和失败的情况。 - **处理服务器响应**:在回调函数中,可以访问到服务器返回的数据,进行后续的业务逻辑处理。 ...

    extjs文档的详细介绍

    在`success`回调函数中,`response.responseText` 用于获取服务器返回的JSON字符串,然后通过 `Ext.util.JSON.decode()` 解析成JavaScript对象,以便进一步处理。如果服务器返回的数据格式如`{success: true, msg: '...

    Ext+Struts2多文件上传

    2. **表单提交**:当用户选择好文件后,可以通过`Ext.Ajax.request`或者`Ext.form.Basic.submit`方法将表单数据发送到服务器。表单数据会封装在一个FormData对象中,方便Struts2处理。 3. **Struts2配置**:在...

    ext开发_前后台交互

    `form.submit()`根据后端返回的JSON数据的`success`字段自动选择成功或失败的回调,同时能处理部分前台错误。然而,对于后台异常情况,如action不存在,`form.submit()`可能无法妥善处理,导致JavaScript错误。 ...

    ext form 表单提交数据的方法小结

    在这种情况下,`Ext.Ajax.request`方法用于发送请求,`params`对象包含了要发送的数据,`success`函数处理成功的回调。 总结: EXT JS提供了灵活的表单数据提交方式,包括默认的AJAX提交、非AJAX提交以及使用Ajax类...

    老师整理的extjs学习笔记

    `Ext.XTemplate` 类似于 `Ext.Template`,但它更加强大和灵活,支持更复杂的逻辑和数据处理。例如,它可以用于遍历数组或对象,并根据条件生成不同的 HTML 内容。 #### 三、Event、Component and Container **3.1 ...

    EXT提交表单,ASP.NET

    3. **返回响应**:将处理结果封装成JSON或其他格式,通过Response对象返回到前端。EXTJS的提交回调函数可以解析这个响应,根据结果更新界面或者给出用户反馈。 结合示例代码,我们可以有以下结构: EXTJS部分: ``...

    ExtJs实现数据加载和提交经典代码

    在`doAction`方法中,第二个参数是从`load`或`submit`方法传递过来的`Ext.form.Action`对象的配置数据。配置数据主要包括以下几部分: - **success/failure**:用于定义请求成功或失败后的回调函数。 - **response*...

    SSH2上传实现

    - `&lt;package&gt;`定义了一个名为`extjs`的包,继承自`json-default`,用于处理JSON响应。 - `&lt;action&gt;`指定了请求路径和处理类,其中`uploadPath`参数定义了文件保存的目录。 - `&lt;result&gt;`配置了返回结果的类型和内容...

    EXTjs 文件上传(可用)

    form.getForm().on('submit', function(form, event) { event.preventDefault(); var fileInput = form.findField('uploadFile').getEl().dom; var file = fileInput.files[0]; // 构建POST数据 var formData ...

    Extjs2.x 实现文件上传组件

    formPanel.getForm().submit({ url: 'upload.php', // 服务器端处理文件上传的脚本 method: 'POST', success: function(form, action) { Ext.Msg.alert('成功', '文件已成功上传'); }, failure: function...

    ExtJs做的用户登陆!ASP后台

    在实际项目中,你还需要考虑更多细节,比如错误处理、安全措施(如防止SQL注入和XSS攻击)、以及前后端的通信协议(JSON、XML等)。对于初学者来说,这是一个很好的起点,通过实践这个例子,可以更好地理解客户端与...

    Extjs页面验证(修订版)

    - 使用`Ext.form.action.Submit`和`Ext.form.action.Load`类,可以定制化提交和加载数据的行为,比如处理JSON或XML响应,或者进行错误处理。 3. **示例代码分析**: - 在提供的示例中,可能包含了各种表单验证的...

Global site tag (gtag.js) - Google Analytics