关于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拷贝过来的,还没有读取,待以后完善。

你可能感兴趣的:(json,F#,prototype,ext,J#)