Ext.form.Panel 上传文件,不依赖服务端的Json返回

在使用Extjs的表单控件Ext.form.Panel做文件上传时,发现success方法的回调必须依赖服务端返回,其基本结构是:{success:true}。

原先做好的上传程序为了满足界面控件的需要而去做变动,这种设计我认为是不够合理的。


如何不依赖服务端的Json返回,我的解决方案是:重写Ext.form.Action.Submit的handleResponse,控制返回对象的success属性。


       Ext.override(Ext.form.Action.Submit, {
           //保存原先的处理原型
           handleResponseV1: Ext.form.Action.Submit.prototype.handleResponse,
           //重写原有处理方式
           handleResponse: function (response) {
               try {
                   var base = this.handleResponseV1(response);
                   base.success = true;
                   return base;
               }
               catch (ex) { }
               return { success: false };
           }
       });





       //调用示例:调用方式不受影响


           new Ext.form.Panel({
               url: 'upload.ashx',
               items:
             [
                new Ext.form.field.File({
                    listeners: {
                        change: function () {
                            var frm = this.up("form");
                            frm.submit({
                                success: function (form, action) {
                                    //得到json对象
                                    var jsonData = Ext.decode(action.response.responseText);
                                    alert('上传成功');
                                }
                                , failure: function (form, action) {
                                    debugger;
                                    alert('上传失败');
                                }
                            })
                        }
                    }
                })
             ]
           }).render(Ext.getBody());

阅读更多
个人分类: Extjs
上一篇Extjs 轻松实现窗口右下角短消息提示功能
下一篇Extjs , Ext.selection.Mode 实现行多选功能
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭