autocomplete

来源:互联网 发布:js url加密解密 编辑:程序博客网 时间:2024/05/27 14:12

/**
 * @author GaoXue 2010-10-23
 */
function ajax(option){
 option = {
  type: option.type || "POST",
  url: option.url || "",
  timeout: option.timeout || 5000,
  datatype: option.datatype || "",
  onSuccess: option.onSuccess ||
  function(){
  },
  onError: option.onError ||
  function(){
  },
  onComplete: option.onComplete ||
  function(){
  },
  data: option.data || ""
 };
 if (typeof XMLHttpRequest == "undefined") {
  XMLHttpRequest = function(){
   return new ActiveXObject(navigate.userAgent.indexOf("MSIE 5") >= 0 ? "Microsoft.XMLHttp" : "Msxml2.XMLHttp");
  };
 }
 var xml = new XMLHttpRequest();
 xml.open(option.type, option.url, true);
 xml.setRequestHeader("Content-Type","text/xml");
 if(xml.overrideMimeType) xml.setRequestHeader("Connection","close");
 var timeoutlength = option.timeout;
 var requestDone = false;
 setTimeout(function(){
  requestDone = true;
 }, timeoutlength);
 //xml.onreadystatechange = function(){
 // if (xml.readystate == 4 && !requestDone) {
   if (httpRequestSuccess(xml)) {
    option.onSuccess(httpResponseData(xml, option.datatype));
   }
   else {
    option.onError();
   }
   option.onComplete();
   xml = null;
//  }
// };
 xml.send();
 function httpRequestSuccess(xml){
  try {
   if (!xml.status && location.protocol == "file:" ||
   xml.status >= 200 && xml.status < 300 ||
   xml.status == 304 ||
   navigate.userAgent.indexOf("safari") >= 0 && typeof xml.status == "undefined") {
    return true
   }
  }
  catch (e) {
  }
  return false;
 }
 function httpResponseData(xml, datatype){
  var data;
  var header = xml.getResponseHeader("Content-type");
  if (datatype == "xml"||(!datatype && header && header.indexOf("xml") >= 0)) {
   data = xml.responseXML;
  }
  else{
   data = xml.responseText;
  }
  if(datatype=="script"){
   eval.call(window.data);
  }
 }
 return data;
}
 

原创粉丝点击