国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > AJAX > 正文

js實現(xiàn)簡單實用的AJAX完整實例

2024-09-01 08:28:08
字體:
供稿:網(wǎng)友

本文實例講述了js實現(xiàn)簡單實用的AJAX的方法。,具體如下:

//版權(quán)歸屬 WUJXPING//ajax 1.2//更新2012-2-20//1、異步數(shù)據(jù)加載可以進(jìn)行加載方式get,post的設(shè)定//2、異步同步模式的屬性設(shè)定//3、數(shù)據(jù)加載自動超時設(shè)置//4、***數(shù)據(jù)加載事件的添加,通過事件可以進(jìn)行服務(wù)器數(shù)據(jù)的實時處理//5、增加回調(diào)函數(shù)中用戶自定義參數(shù)this.e//6、增加ajax反復(fù)提交控制,只需將ajax對象定義為全局變量,每次提交都會進(jìn)行等待上次提交的執(zhí)行結(jié)果//7、修改數(shù)據(jù)反復(fù)提交時XmlHttp對象被反復(fù)創(chuàng)建的問題//8、修復(fù)重大BUG,多個AJAX事件覆蓋問題//服務(wù)器數(shù)據(jù)返回事件ajax.prototype.ServerEven=function(Func){  this.callback=new delegate(Func);//實例化}//創(chuàng)建異步處理對象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"]; //根據(jù)不同的瀏覽器創(chuàng)建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; } //開始調(diào)用ajax.prototype.Send=function(){  if(this.isbusy)//ajax正忙    return;  this.isbusy=true; var xmlhtml=this.CreateXMLHttp(); //創(chuàng)建對象  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;  // 加隨機數(shù)防止緩存  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");  //開啟定時進(jìn)行超時等待  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); //關(guān)閉定時器  },this.timeout);  if(this.async)//異步數(shù)據(jù)加載時狀態(tài)變化與事件掛鉤    xmlhtml.onreadystatechange=function(){//接收服務(wù)器響應(yīng)      if(xmlhtml.readyState==4){//判斷是否是完成狀態(tài)        if(xmlhtml.status==200){ //判斷是否執(zhí)行成功          _this.isbusy=false;          clearTimeout(timer); //關(guān)閉定時器          if(_this.callback!=null)//開始觸發(fā)服務(wù)器事件            _this.callback.run(xmlhtml,_this.e);        }      }    };  try{    xmlhtml.send(this.option);  }catch(err){    this.isbusy=false    clearTimeout(timer); //關(guān)閉定時器    alert(err);    return;  }  if(!this.async){//同步數(shù)據(jù)加載時數(shù)據(jù)返回處理    this.isbusy=false;    clearTimeout(timer); //關(guān)閉定時器    if(this.callback!=null)      this.callback.run(xmlhtml,this.e);  } } //創(chuàng)建ajax對象function ajax(url){  this.method="post";//設(shè)置數(shù)據(jù)提交方式  this.async=true;//是否進(jìn)行異步數(shù)據(jù)加載模式  this.option="";  //請求的參數(shù)  this.url=url;//請求的Url連接  this.timeout=1000*60*1;//默認(rèn)超時時間為1分鐘  this.e=null;//回調(diào)事件中用戶自定義參數(shù)  this.XmlHttp=null;//接收異步創(chuàng)建的對象防止反復(fù)創(chuàng)建  this.isbusy=false//獲取當(dāng)前ajax的執(zhí)行狀態(tài)  this.callback=null;//聲明回調(diào)事件  // 實現(xiàn)委托的類  delegate=function (func){   this.arr = new Array(); // 回調(diào)函數(shù)數(shù)組   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); // 遍歷所有方法以及調(diào)用     }    }   }   this.add(func);  }}            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 寻甸| 南丰县| 泸水县| 来安县| 曲水县| 钟山县| 北海市| 固镇县| 太保市| 临海市| 昆明市| 阿克陶县| 安图县| 泗洪县| 沙河市| 苏尼特右旗| 繁昌县| 松原市| 布拖县| 绍兴市| 桐柏县| 吕梁市| 永胜县| 射洪县| 隆安县| 寿阳县| 临沂市| 区。| 新巴尔虎右旗| 巩留县| 庐江县| 金坛市| 介休市| 敦煌市| 师宗县| 庆阳市| 库车县| 伊春市| 原阳县| 万年县| 诏安县|