qgymje 发表于 2013-1-23 02:27:21

一个ajax通用函数【看精通js】

待测试:
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      : options.data          || ''    }    if(typeof XMLHttpRequest === 'undefined'){      XMLHttpRequest = function(){            return new ActiveXObject(                navigator.userAgent.indexOf('MSIE 5') >= 0 ?                  'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'            );      }    }      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.indexOf('xml') >= 0 ;      data = type == 'xml' || data ? r.responseXML : r.responseText;      if(type == 'script'){            eval.call(window,data);            return data;      }    }}function serialize (a){    var s = [];    if(a.constructor == Array){      for(var i = 0 ; i < a.length ; i++){            s.push(a.name + '=' + encodeURIComponent(a.value));      }    }else{      for(var j in a){            s.push(j + '=' + encodeURIComponent(a));      }    }    return s.join('&');}
页: [1]
查看完整版本: 一个ajax通用函数【看精通js】