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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值