1. 程式人生 > >封裝ajax

封裝ajax

activex read 用戶 網絡 for http 事件 clas nload

今天來說一下ajax,話不多說;直接上代碼!

//將數據轉換成 a=1&b=2格式;
function json2url(json){
   var arr = [];
   //加隨機數  防止緩存;
   json.t = Math.random();
   for(var name in json){
      arr.push(name+‘=‘+json[name]);
   }
   return arr.join(‘&‘);
}

function ajax(json){
   //考慮前臺默認值:
   if(!json.url){
      alert(‘請輸入合理的請求地址!‘);
      return;
   }
   json.type = json.type || ‘get‘;
   json.time = json.time || 5000;
   json.data = json.data || {};
      //1.創建一個ajax對象;
      var timer = null;
   if(window.XMLHttpRequest){
      var oAjax = new XMLHttpRequest();
   }else{
      var oAjax = new ActiveXObject(‘Microsoft.XMLHTTP‘);
   }
   
   //判斷用戶傳遞的是get還是post請求:
   switch (json.type.toLowerCase()){
      case ‘get‘:
         //2.打開請求;
         oAjax.open(‘get‘,json.url+‘?‘+json2url(json.data),true);
         //3.發送數據:
         oAjax.send();
         break;
      case ‘post‘:
         //打開請求;
         oAjax.open(‘post‘,json.url,true);
         //設置請求頭;
         oAjax.setRequestHeader(‘Content-type‘,‘application/x-www-form-urlencoded‘);
         //發送數據;
         oAjax.send(json2url(json.data));
         break;
   }
    json.fnLoading && json.fnLoading();
   //4.獲取響應數據
   oAjax.onreadystatechange = function(){
      if (oAjax.readyState == 4) {
      	json.complete && json.complete();
         if (oAjax.status >= 200 && oAjax.status < 300 || oAjax.status == 304) {
            //如果外邊傳遞了成功的回調函數,那麽就執行,
            json.success && json.success(oAjax.responseText);
         } else {
            //如果外邊傳遞了失敗的回調函數,那麽就執行,
            json.error && json.error(oAjax.status);
         }
         clearTimeout(timer);//規定時間內取到數據後清除定時器;
      }
   };
   var timer;
   timer = setTimeout(function(){//設置網絡響應超時;
      alert(‘網絡響應超時,請稍後再試‘);
      oAjax.onreadystatechange = null;//網絡超時後清除事件;
   },json.time);
};

  

就是這樣!你們看懂了嗎?百分百純純的原創!其實就是老師教的!就是這樣 =^?ω?^=

封裝ajax