js 간단 하고 실 용적 인 AJAX 전체 인 스 턴 스 실현

4391 단어 jsAJAX
본 고 는 js 가 간단 하고 실 용적 인 AJAX 를 실현 하 는 방법 을 실례 로 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.

//     WUJXPING
//ajax 1.2
//  2012-2-20
//1、              get,post   
//2、           
//3、          
//4、***         ,                  
//5、              this.e
//6、  ajax      ,   ajax         ,                   
//7、         XmlHttp          
//8、    BUG,  AJAX      
//         
ajax.prototype.ServerEven=function(Func){
  this.callback=new delegate(Func);//   
}
//        
ajax.prototype.CreateXMLHttp=function(){
  if(this.XmlHttp!=null && typeof this.XmlHttp == "object")
    return this.XmlHttp;
  xmlhttpObj = ["Microsoft.XmlHttp","MSXML2.XmlHttp.5.0","MSXML2.XmlHttp.4.0","MSXML2.XmlHttp.3.0","MSXML2.XmlHttp"];
 //          XMLHttpRequest
 if(window.ActiveXObject){
   for(i=0;i<xmlhttpObj.length;i++){ //  ie    
      try{
        this.XmlHttp = new ActiveXObject(xmlhttpObj[i]);
      }catch(err){
        continue;
      }
      if(this.XmlHttp)
        break;
    }
 }
 else if(window.XMLHttpRequest){
  this.XmlHttp=new XMLHttpRequest();
 }
  return this.XmlHttp;
 }
 //    
ajax.prototype.Send=function(){
  if(this.isbusy)//ajax  
    return;
  this.isbusy=true;
 var xmlhtml=this.CreateXMLHttp(); //    
  if(xmlhtml==null){
    this.isbusy=false
    if(this.callback!=null)
      this.callback.run("XMLHttpRequest Create Faild!",this.e);
    return;
  }
  var url=this.url;
  var _this=this;
  //         
  if (url.indexOf("?") > 0)
    url += "&randnum=" + Math.random();
  else
    url += "?randnum=" + Math.random();
  xmlhtml.open(this.method,url,this.async);
 xmlhtml.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8;");
  xmlhtml.setRequestHeader("Cache-Control","no-cache");
 xmlhtml.setRequestHeader("Connection","Keep-Alive");
  //          
  var timer=setTimeout(function(){
    //if(xmlhtml.readyState!=4){
    xmlhtml.abort(); //      
    _this.isbusy=false;
    if(_this.callback!=null)
      _this.callback.run("send timeout!",_this.e);
    clearTimeout(timer); //     
  },this.timeout);
  if(this.async)//                
    xmlhtml.onreadystatechange=function(){//       
      if(xmlhtml.readyState==4){//         
        if(xmlhtml.status==200){ //        
          _this.isbusy=false;
          clearTimeout(timer); //     
          if(_this.callback!=null)//         
            _this.callback.run(xmlhtml,_this.e);
        }
      }
    };
  try{
    xmlhtml.send(this.option);
  }catch(err){
    this.isbusy=false
    clearTimeout(timer); //     
    alert(err);
    return;
  }
  if(!this.async){//             
    this.isbusy=false;
    clearTimeout(timer); //     
    if(this.callback!=null)
      this.callback.run(xmlhtml,this.e);
  }
 }
 //  ajax  
function ajax(url){
  this.method="post";//        
  this.async=true;//            
  this.option="";  //     
  this.url=url;//   Url  
  this.timeout=1000*60*1;//       1  
  this.e=null;//            
  this.XmlHttp=null;//               
  this.isbusy=false//    ajax     
  this.callback=null;//      
  //       
  delegate=function (func){
   this.arr = new Array(); //       
   this.add = function(func){
    this.arr[this.arr.length] = func;
   };
   this.run = function(sender,e){
    for(var i=0;i<this.arr.length;i++){
     var func = this.arr[i];
     if(typeof func == "function"){
      func(sender,e); //           
     }
    }
   }
   this.add(func);
  }
}

ajax 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.과 을 볼 수 있 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 ajax 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기