extjs之-读取xml

请求我们可以暂分为两种:一种是表单Form的请求提交,一种是AJAX的请求。
我们现在对这两种请求的返回结果进行读取。
在后台用我们自定义的 XML格式。
然后写个JS对 XML进行读取。

1:对AJAX请求返回的 xml读取
var AjaxRead = {};  
AjaxRead = function (doc){
this.xmlData = doc;
var root = doc.documentElement || doc;
var q = Ext.DomQuery;
var sv = q.selectValue("success", root, true);
        success = sv !== false && sv !== 'false'&& sv!=='otherfalse';
    var ns = q.select("field", root);  
        for(var i = 0, len = ns.length; i < len; i++) {
       var n =  ns[i];
                var msg = q.selectValue("msg", n, 0);
          var type = q.selectValue('@type',n,0);
if(type == 'success'){
Ext.MessageBox.show({
title:'成功',
msg: msg,
       buttons: Ext.MessageBox.OK,
       icon: Ext.MessageBox.INFO
})
}
else if(type=='exception'){
Ext.MessageBox.show({
title:'错误',
msg: msg,
       buttons: Ext.MessageBox.OK,
       icon: Ext.MessageBox.ERROR
})
}
         }
}
2:对一般FORM请求返回的 XML读取:
Ext.form.CMXmlErrorReader = function(){

    //下面这段不理解,字面上是 传入当前对象给父类的构造方法
    Ext.form.CMXmlErrorReader.superclass.constructor.call(this, {
            totalRecords:"total",
            record : 'field',
            success: '@success'
        }, [
            'id', 'msg'
        ]
    );
    this.totalRecords=0;
   
}
//集成自XMLReader复写一下读数据时候的操作
Ext.extend(Ext.form.CMXmlErrorReader, Ext.data.XmlReader,
{   
getTotalCount:function()
{
/*
var doc =  this.xmlData;

if(doc==null)
{
return 0;
}
var root = doc.documentElement || doc;
    var q = Ext.DomQuery;
    var totalRecords = 0;
    totalRecords = q.selectNumber(this.meta.totalRecords, root, 0);
    //Ext.MessageBox.alert(totalRecords); 
    return totalRecords;
*/
return this.totalRecords;
}
,
readRecords : function(doc){
      //this.meta指的是初始化xmlReader时的config配置项
        
   this.xmlData = 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);
    this.totalRecords = totalRecords;
    }   
   if(this.meta.success){
      var sv = q.selectValue(this.meta.success, root, true);           
      success = sv !== false && sv !== 'false'&& sv!=='otherfalse';
    }
    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;
// add by gjw
   // var info =  Ext.MessageBox.INFO;
var type = q.selectValue('@type',n,0);
var msg = q.selectValue('msg',n,0);
if(type == 'success'){
/*
Ext.MessageBox.show({
title:'成功',
msg: msg,
       buttons: Ext.MessageBox.OK,
       icon: Ext.MessageBox.INFO
})
*/
//Ext.Msg.alert('成功',v);
}
else if(type=='exception'){
// deal with common exception
Ext.MessageBox.show({
title:'错误',
msg: msg,
       buttons: Ext.MessageBox.OK,
       icon: Ext.MessageBox.ERROR
})
}
else if(type=='session_error'){
//deal with session error
RS.showLogin({msg:msg});//显示登录窗口页面
//console.log("session error:"+msg);
}
// end by gjw
        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
    };
    }
}
);
xml格式如:
<message success="true"><field type="success"><msg><![CDATA[删除成功!]]></msg></field></message>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值