首页 > 代码库 > xhr 原生兼容写法

xhr 原生兼容写法

  1. // create xhr object cross browser  
  2. function createXHR() {  
  3.     if(typeof XMLHttpRequest != ‘undefined‘){  
  4.         return new XMLHttpRequest();  
  5.     }  
  6.     else if(typeof ActiveXObject != ‘undefined‘){  
  7.         if(typeof arguments.callee.activeXString != ‘string‘){  
  8.             var versions = [‘MSXML2.XMLHttp.6.0‘,‘MSXML2.XMLHttp.3.0‘ ,‘MSXML2.XMLHttp‘], // ie browser different vesions  
  9.                 i,len;  
  10.             for(i=0,len=versions.length; i<len;i++){  
  11.                 try{  
  12.                     new ActiveXObject(versions[i]);  
  13.                     arguments.callee.activeXString = versions[i];  
  14.                     break;  
  15.                 }  
  16.                 catch(ex){  
  17.                     // jump  
  18.                 }  
  19.             }  
  20.         }  
  21.         return new ActiveXObject(arguments.callee.activeXString);  
  22.           
  23.     }  
  24.     else{  
  25.         throw new Error(‘No XHR object available.‘);  
  26.     }  
  27. }  
  28.   
  29. function xhrRequest(url,callback){  
  30.     var xhr = createXHR();  
  31.     xhr.onreadystatechange = function(){  
  32.         if(xhr.readyState == 4){  
  33.             if((xhr.status >= 200 && xhr.status<300) || xhr.status == 304){  //200 表示相应成功 304 表示缓存中存在请求的资源  
  34.                 // 对响应的信息写在回调函数里面  
  35.                 var str = xhr.status+‘ ‘+xhr.responseText;  
  36.                 callback(str);  
  37.             }  
  38.             else{  
  39.                 return ‘request is unsucessful ‘+xhr.status;  
  40.             }  
  41.         }  
  42.     }  
  43.     xhr.open(‘get‘,url,true);  
  44.     xhr.send();  
  45. }  
  46.   
  47. function hundler(data){  
  48.     console.log(data);  
  49. }  
  50.   
  51. window.onload = function(){  
  52.     xhrRequest(‘resource.txt‘,hundler);  
  53. }  

xhr 原生兼容写法