随笔 - 181, 文章 - 2, 评论 - 85, 引用 - 0
数据加载中……

5月8日-----Ajax中的重构

重构这个概念在Ajax中尤为重要,好的重构可以在大量Javascript代码的情况下更好的降低代码的混乱性,使其更加清晰。下面的ContentLoader对象正是一个很好的范例
/*
url-loading object and a request queue built on top of it
*/


/* namespacing object */
var net=new Object();

net.READY_STATE_UNINITIALIZED
=0;
net.READY_STATE_LOADING
=1;
net.READY_STATE_LOADED
=2;
net.READY_STATE_INTERACTIVE
=3;
net.READY_STATE_COMPLETE
=4;


/*--- content loader object for cross-browser requests ---*/
net.ContentLoader
=function(url,onload,onerror,method,params,contentType){
  
this.req=null;
  
this.onload=onload;
  
this.onerror=(onerror) ? onerror : this.defaultError;
  
this.loadXMLDoc(url,method,params,contentType);
}


net.ContentLoader.prototype.loadXMLDoc
=function(url,method,params,contentType){
  
if (!method){
    method
="GET";
  }

  
if (!contentType && method=="POST"){
    contentType
='application/x-www-form-urlencoded';
  }

  
if (window.XMLHttpRequest){
    
this.req=new XMLHttpRequest();
  }
 else if (window.ActiveXObject){
    
this.req=new ActiveXObject("Microsoft.XMLHTTP");
  }

  
if (this.req){
    
try{
      
var loader=this;
      
this.req.onreadystatechange=function(){
        net.ContentLoader.onReadyState.call(loader);
      }

      
this.req.open(method,url,true);
      
if (contentType){
        
this.req.setRequestHeader('Content-Type', contentType);
      }

      
this.req.send(params);
    }
catch (err){
      
this.onerror.call(this);
    }

  }

}



net.ContentLoader.onReadyState
=function(){
  
var req=this.req;
  
var ready=req.readyState;
  
var httpStatus=req.status;
  
if (ready==net.READY_STATE_COMPLETE){
    
if (httpStatus==200 || httpStatus==0){
      
this.onload.call(this);
    }
else{
      
this.onerror.call(this);
    }

  }

}


net.ContentLoader.prototype.defaultError
=function(){
  alert(
"error fetching data!"
    
+"\n\nreadyState:"+this.req.readyState
    
+"\nstatus: "+this.req.status
    
+"\nheaders: "+this.req.getAllResponseHeaders());
}




posted on 2006-05-08 21:20 wsdfsdf 阅读(179) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理