Javascript - Ajax - PullRequest
       4

Javascript - Ajax

0 голосов
/ 05 ноября 2010
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("&");
}

Этот код не работает. В чем проблема?

Ответы [ 2 ]

3 голосов
/ 05 ноября 2010

Не думаю, что у вас когда-нибудь будет правильный ответ на этот вопрос, поскольку почти все разработчики используют библиотеки Javascript для этого!

Почему бы вам не сделать то же самое здесь, это было быпотерял быстрее?

Оформить заказ JQuery, если вы его еще не знаете: http://api.jquery.com/jQuery.ajax/

1 голос
/ 05 ноября 2010

function httpData(r.type) { до function httpData(r,type) {

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...