Показать сообщение отдельно
  #3 (permalink)  
Старый 21.10.2010, 16:25
Аватар для cyberx
Аспирант
Отправить личное сообщение для cyberx Посмотреть профиль Найти все сообщения от cyberx
 
Регистрация: 02.02.2010
Сообщений: 50

Вот неплохая функция 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 || ""
            };

  var xml = navigator.appName == "Microsoft Internet Explorer" ? new ActiveXObject("Microsoft.XMLHTTP") : 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(options.data);

 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;
  }
 }


Используете так

Ajax({
          url: "page.php",
          type: "POST",
          data: 'process='+'value',
          onSuccess: function(msg) 
		              {
                               document.getElementById('pageContent').innerHTML = msg;
                              }
         });


В url записываете страницу куда хотите отправить асинхронный запрос, в переменной msg будет сам результат. Вместо 'pageContent' вставьте тот id элемента куда хотите вставить ответ. Можете передать данные через data. page.php получить так $_POST['process'];

Последний раз редактировалось cyberx, 21.10.2010 в 16:58.
Ответить с цитированием