Javascript-Ajax

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(){
   try { return new XMLHttpRequest(); } catch(e) {}
   try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e) {}
   try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {}
   try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
   try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
   return null;
  };
 }
 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 >= 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;
 }
}
function serialize(a) {
 var s = [];
 if (a.constructor == Array) {
  for (var i = 0; i < a.length; i++) s.push(a[i].name + "=" + encodeURIComponent(a[i].value));
 } else {
  for (var j in a) s.push(j + "=" + encodeURIComponent(a[j]));
 }
 return s.join("&");
}

This code does not work. What is the problem?

I don't think you will ever have the right answer to this question since almost all developers are using Javascript libraries to handle that!

Why don't you do the same here, that would be a lost faster?

Checkout out JQuery if you don't know it already: http://api.jquery.com/jQuery.ajax/

function httpData(r.type) { to function httpData(r,type) {