`

关于ext.from.BasicForm的errorReader

阅读更多
由于公司的FORM提交都是返回JSON数据,现在有一个FORM由于加了权限,所以没有提交到正确的ACTION,而被权限filter拦截,返回的一个HTML页面,提示没有权限的信息。由于是一个HTML页面,所以在把它当JSON解析时会有错误。要解决这个错误,就要这样做。
form.errorReader=errorReader;
        var errorMsg = Ext.data.Record.create([{name:'html'}]);
        var errorReader = new Ext.data.HtmlReader({
            records:'body'
        },errorMsg);
]
HtmlReader是我随便定义的一个类,
Ext.data.HtmlReader = function(meta, recordType){
    meta = meta || {};
    Ext.data.HtmlReader.superclass.constructor.call(this, meta, recordType || meta.fields);
};
Ext.extend(Ext.data.HtmlReader, Ext.data.DataReader, {
    read : function(response){
        var doc = response.responseText;
        if(!doc) {
            throw {message: "HtmlReader.read: HTML Document not available"};
        }
        return this.readRecords(doc);
    },
    readRecords : function(doc){
        this.htmlData = doc;
        var root = doc.documentElement || doc;
    	var q = Ext.DomQuery;
    	var recordType = this.recordType, fields = recordType.prototype.fields;
    	var sid = this.meta.id;
    	var totalRecords = 0, success = true;
    	if(this.meta.totalRecords){
    	    totalRecords = q.selectNumber(this.meta.totalRecords, root, 0);
    	}

        if(this.meta.success){
            var sv = q.selectValue(this.meta.success, root, true);
            success = sv !== false && sv !== 'false';
    	}
    	var records = [];
    	/*var ns = q.select(this.meta.record, root);
        for(var i = 0, len = ns.length; i < len; i++) {
	        var n = ns[i];
	        var values = {};
	        var id = sid ? q.selectValue(sid, n) : undefined;
	        for(var j = 0, jlen = fields.length; j < jlen; j++){
	            var f = fields.items[j];
                var v = q.selectValue(f.mapping || f.name, n, f.defaultValue);
	            v = f.convert(v, n);
	            values[f.name] = v;
	        }
	        var record = new recordType(values, id);
	        record.node = n;
	        records[records.length] = record;
	    } */

	    return {
	        success : success,
	        records : records,
	        totalRecords : totalRecords || records.length
	    };
    }
});
这个是直接从XmlReader拷贝过来的,还没有读取,待以后完善。
分享到:
评论

相关推荐

    EXT核心API详解

    43、Ext.CycleButton类 ……………… 39 44、Ext.form.BasicForm类 …………… 40 45、Ext.form.Field类 …………………… 41 46、Ext.form.Checkbox类 …………… 42 47、Ext.form.Radio类 ………………… 43 48、...

    Ext Js权威指南(.zip.001

    4.3.5 ext.error中的静态方法 / 133 4.4 深入了解类的创建及管理 / 135 4.4.1 开始创建类 / 135 4.4.2 创建类的类:ext.class / 137 4.4.3 所有继承类的基类:ext.base / 151 4.4.4 实现动态加载:ext.loader ...

    EXT核心API详解.doc

    39. **Ext.form.BasicForm类**:基础表单类,管理表单的提交和验证。 40. **Ext.form.Field类**:表单字段的基类,包含基本的表单字段行为。 41. **Ext.form.Checkbox类**:复选框字段。 42. **Ext.form.Radio类*...

    ExtJS入门教程(超级详细)

    43、Ext.CycleButton类 ……………… 39 44、Ext.form.BasicForm类 …………… 40 45、Ext.form.Field类 …………………… 41 46、Ext.form.Checkbox类 …………… 42 47、Ext.form.Radio类 ………………… 43 48、...

    ext 资源汇总

    例如,EXT.form.BasicForm和EXT.form.Panel是表单的基础,而EXT.form.field.*系列类则代表各种表单字段。 2. **EXT.grid**: EXT.grid是EXT中的数据展示组件,用于显示多行、多列的数据。它可以处理大量数据,并且...

    extjs帮助文档pdf版

    - **概述**:`Ext` 是 ExtJS 的核心命名空间,包含了全局的方法和属性。 - **用途**:提供了一个统一的入口来访问 ExtJS 库的功能,如创建组件、管理事件等。 - **常用方法**: - `Ext.create()`: 创建一个组件实例...

    ext 文件上传

    在EXTJS中,文件上传通常涉及到EXT.form.BasicForm、EXT.form.FileField和EXT.util.Queue等组件。EXT.form.FileField是用于创建一个文件选择输入字段的组件,用户可以通过这个字段选择本地文件进行上传。而EXT.util....

    Ext form_load

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

    EXTJS___API详解

    3. **Number 类**:增强了JavaScript的数字处理,提供了如Ext.Number.from()用于安全地转换值为数字,Ext.Number.round()进行四舍五入等。 4. **String 类**:扩展了字符串操作,例如Ext.String.format()用于格式化...

    多年积攒下来的EXT3.3例子大放送

    例如,`Ext.my`文件夹可能包含不同控件的示例,比如使用`Ext.grid.Panel`创建数据网格,用`Ext.form.BasicForm`构建表单,或使用`Ext.tree.TreePanel`展示层次结构数据。 2. **前后台数据交互**:EXTJS支持AJAX技术...

    Ext3.0 api帮助文档

    - **Ext.form.BasicForm**: 提供表单的提交和数据验证功能。 7. **树形视图(Trees)** - **Ext.tree.TreePanel**: 显示树状数据结构,支持节点的拖放、展开折叠等操作。 - **TreeStore**: 用于管理树的数据,...

    ext checkboxgroup 回填数据解决

    重写 代码如下: //解决checkboxgroup回填数据问题 Ext.override(Ext.form.BasicForm,{ findField : function(id){ var field = this.items.get(id); if(!field){ this.items.each(function(f){ if(f.isXType(...

    ext上传uploading

    在EXTJS中,文件上传通常涉及到EXT.form.BasicForm和EXT.form.field.File这两个主要组件。BasicForm是用于管理表单数据的类,而EXT.form.field.File则是一个特殊的输入字段,允许用户选择本地文件进行上传。这个功能...

    深入浅出ExtJS第2版

    深入浅出ExtJS第2版+源码..1 下载EXT发布包 1 1.2 如何查看EXT自带的API和示例 1 1.3 为什么有些示例必须放在服务器上 才能看到效果 2 1.4 Hello World 2 1.4.1 直接使用下载的发布包 2 1.4.2 在项目中使用EXT...

    Extjs 关于 cookie的操作

    ### Extjs 中关于 Cookie 的操作 #### 一、引言 在 Web 开发中,Cookie 是一种常用的数据存储方式,用于保存用户的一些基本信息或者状态,从而实现网站的个性化设置或登录状态保持等功能。Extjs 作为一种强大的 ...

    extjs属性方法大全

    `Ext.form.BasicForm` 是一个基本的表单类,用于处理表单的提交和加载操作。 - **属性:** - `baseParams`: 默认请求参数。 - `method`: 请求方式,默认为 `GET` 或 `POST`。 - `url`: 默认 URL 地址。 - `...

    EXTJS_.7z文件上传

    它通常与`Ext.form.BasicForm`和`Ext.Ajax`一起使用,实现异步文件上传。 2. **Struts2上传插件**:Struts2是一个流行的Java Web框架,它提供了文件上传的支持。Struts2的Upload插件可以处理文件上传请求,将上传的...

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

    这里的`form`对象实际上是`Ext.form.BasicForm`类型,它包含了`load`和`submit`两种方法,用于完成数据的加载和提交工作。 ### load和submit方法 - **load方法**:该方法主要用于从服务器端加载数据并填充到表单中...

    ext上传文件

    在`change`事件处理函数中,创建一个隐藏的Ext.form.BasicForm实例,并将FileUploadField添加到表单中。 4. **提交表单**: 使用`form.submit()`方法,指定服务器端的URL和可能的回调函数,这会使用Ajax提交文件...

Global site tag (gtag.js) - Google Analytics