完整的ajax程式包

來源:互聯網
上載者:User

摘自<<精通javascript>>

if(typeof XMLHttpRequest == 'undefined')
 XMLHttpRequest = function(){
  return new ActiveObject(navigator.userAgent.indexOf("MSIE 5")>=0?"Microsoft.XMLHTTP":"Msxml2.XMLHTTP");
 };
function ajax(options){
 options = {
  type: options.type || "POST",
  url: options.url || "",
  timeout: options.timeout || 5000,
  onComplete: options.onComplete ||
  function(){
  },
  onError: options.onError ||
  function(){
  },
  onSuccess: options.onSuccess ||
  function(){},
  data: option.data || ""
 };
 
 var xml = new XMLHttpRequest();
 xml.open(options.type,options.url,true);
 var timeoutLength = options.timeout;
 var requestDone = false;
 setTimeout(function(){requestDone = true;},timeoutLength);
 
 xml.onreadystatechange = function(){
  if(xml.readystate == 4 && !requestDone){
   if(httpSuccess(xml)){
    options.onSuccess(httpData(xml,options.type));
   }else{
    options.onError();
   }
   options.onComplete();
   
   xml = null; 
  }
 };
 
 xml.send();
 
 function httpSuccess(r){
  try{
   return !r.status && location.protocol=="file:"||
   (r.status>=200 && r.status<300) ||
   r.status == 304 ||
   navigator.userAgent.indexOf("Safari")>=0 &&
   typeof r.status=="undefined";
  }catch(e){
   return false;
  }
 }
 
 function httpData(r,type){
  var ct = r.getResponseHeader("content-type");
  
  var data = !type && ct && ct.indexOf("xml")>=0;
  
  data = type=="xml" || data ? r.responseXML:r.responseText;
  
  if(type == "script")
   eval.call(window,data);
   
  return data;
 }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.