[转帖]Mootools源码分析-35 -- Request.XML&Request.JSON

it2022-05-11  71

原帖地址:http://space.flash8.net/space/?uid-18713-action-viewspace-itemid-407569

原作者:我佛山人

 

代码 // 响应输出为JSON的Ajax请求类 Request.JSON  =   new  Class({     // 继承自Request     Extends: Request,    options: {         // 是否强制返回的JSON为严格格式         secure:  true     },     // 覆盖父类构造函数     initialize:  function (options)    {         // 调用父类同名方法         arguments.callee.parent(options);         // 设置HTTP头部信息          this .headers.extend({ ' Accept ' ' application/json ' ' X-Request ' ' JSON ' });    },     // 请求成功,覆盖Request类的同名方法     success:  function (text)    {         // 添加解释完的JSON对象到响应对象          this .response.json  =  JSON.decode(text,  this .options.secure);         // 调用父类方法,触发成功事件          this .onSuccess( this .response.json, text);    }}); /* 自己扩展的,用于响应输出为XML的Ajax请求类主要是为返回的xml对象附加支持XPath的selectNodes和selectSingleNode方法因为IE本身已经支持这两方法,所以主要是针对支持XPath的其它浏览器document.evaluate方法的用法可参考以下网址:http://developer.mozilla.org/en/docs/DOM:document.evaluatehttp://wiki.mozcn.org/index.php/Firefox:Dive_Into_Greasemonkey/4.6._Doing_something_for_every_element_with_a_certain_attribute */ Request.XML  =   new  Class({     // 继承自Request     Extends: Request,     // 请求成功,覆盖Request类的同名方法     success:  function (text, xml)    {         // 因为IE本身已经支持这两方法,所以主要是针对支持XPath的其它浏览器          if (Browser.Features.xpath)    {             // 扩展实现selectNodes方法             xml.selectNodes  =   function (xpath)    {                 var  nodes  =  [], node;                 // 几个参数的意义                  var  result  =   this .evaluate(xpath,  this this .createNSResolver( this .documentElement), XPathResult.ORDERED_NODE_ITERATOR_TYPE,  null ) ;                 if  (result)     while (node  =  result.iterateNext()) nodes.push(node);                 return  nodes;            };              // 扩展实现selectSingleNode方法             xml.selectSingleNode  =   function (xpath)    {                 var  result  =   this .evaluate(xpath,  this this .createNSResolver( this .documentElement),  9 null );                 return  (result  &&  result.singleNodeValue)  ?  result.singleNodeValue : [];            };        }         // 调用父类方法,触发成功事件          this .onSuccess(xml, text);    }});

 

转载于:https://www.cnblogs.com/maapaa/articles/mootools-s-35.html

相关资源:mootools-core-1.5.1

最新回复(0)