文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>一段兼容FF,IE6,7,8的AJAX 回调框架

一段兼容FF,IE6,7,8的AJAX 回调框架

时间:2010-08-31  来源:孔德雨

var ajax = new Object();
ajax.$x = function(url,onload,onerror,stateArray){
   this.url = url;
   this.req = null;
   this.onload = onload;
   this.onerror = (onerror) ? onerror : this.defaultError;
   this.stateNum = (stateArray) ? stateArray : false;
   this.loadXMLDoc(url);
};
ajax.$x.prototype = {
  loadXMLDoc : function(url){
    if(window.XMLHttpRequest){  //IE 不兼容此种格式的 XHR 申请 这个是为FF准备的
       this.req = new XMLHttpRequest();
       if(this.req.overrideMimeType){
          this.req.overrideMimeType('text/xml');
       }
    }else if(window.ActiveXObject){ //IE 若干类型,具体不知
       try{
         this.req = new ActiveXObject("Msxml3.XMLHTTP");
       }catch(e){
          try{
            this.req = new ActiveXObject("Msxml2.XMLHTTP");
          }catch(e){
            try{
              this.req = new ActiveXObject("Microsoft.XMLHTTP");
            }catch(e){}
          }
       }
    }
    if(this.req){
      try{
        var loader = this;
        this.req.onreadystatechange = function(){ // XHR 对象的readystate 有四个状态,具体参考(《AJAX IN ACTION》)状态的改变会触发该事件,其中标记为4的状态表示回调函数调用成功,最为关键(个人认为最为关键)
          loader.onReadyState.call(loader);
        }
        this.req.open('GET',url,true);
        this.req.send(null);
      }catch(err){
        this.onerror.call(this);
      }
    }
  },
  onReadyState:function(){
    var req = this.req;
    var ready = req.readyState;
    if(this.stateNum && ready >= 1 && ready <= 3){
       this.stateNum[ready-1].call(this);
    }else if(ready == 4){
       var httpStatus = req.status;

       if(httpStatus == 200 || httpStatus == 0){ // 我们平时遇到的404状态等都是httpStatus,其实httpStatus 在200 到299之间都可以认为是成功状态。

从服务器返回后,应该触发回调函数,onload,在我们的例子中,就是 callback 函数

          this.onload.call(this);
       }else{
          this.onerror.call(this);
       }
    }
  },
  defaultError:function(){
    alert("数据链接错误!"
    + "\n\nreadyStatus: " + this.req.readyStatus
    + "\nstatus: " + this.req.status
    + "\nheafer: " + this.req.getAllResponseHeaders()
    )
  }
};

function callback(){
  var res = this.req.responseText;  

};

 var ajax_get_answer = function(){
   var url = "gameAjax.do?state=";
   for(var i = 0;i < elements.length;i++){
     url = url + elements[i].children[0].value;
   }
   new ajax.$x(url,callback,null);
};

 

 

相关阅读 更多 +
排行榜 更多 +
盒子小镇2游戏手机版下载

盒子小镇2游戏手机版下载

冒险解谜 下载
世界盒子模组版下载最新版本

世界盒子模组版下载最新版本

模拟经营 下载
音乐搜索app最新版本下载

音乐搜索app最新版本下载

趣味娱乐 下载