博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Ajax简单

Posted on 2008-05-12 15:37  linFen  阅读(248)  评论(0编辑  收藏  举报

//------------------------------------------------------------------------------------------

//封装XMLHTTP的Request类的代码
var Request = new Object();
//定义一个XMLHTTP的数组
Request.reqList = [];

function getAjax()
{
    var ajax=false;
    try
    {
     ajax = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
     {
      try
      {
      ajax = new ActiveXObject("Microsoft.XMLHTTP");
      }
     catch (E)
      {
      ajax = false;
      }
    }
    if (!ajax && typeof XMLHttpRequest!='undefined')
    {
     ajax = new XMLHttpRequest();
    }

    return ajax;
}

Request.send = function(url, method, callback, data, urlencoded, callback2)
 {
    var req=getAjax(); 
    if(!req)
    {
    return false;
    }
 
    req.onreadystatechange = function()
    {
 
    if (req.readyState == 4)
    {
   
   if (req.status ==200)
   {
   
   if(callback)
    callback(req,data);
   }
   
   else
   {
    alert("当加载数据时发生错误 :\n" + req.status+ "/" + req.statusText);
    
    if (callback2)
    callback2(req,data);
   }
   
   afterLoading();
  
   try {
    delete req;
    req = null;
   } catch (e) {}
  }
 }
 
 if (method=="POST")
  {
  req.open("POST", url, true);
  
  if (urlencoded)
      req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');  
  req.send(data);
  Request.reqList.push(req);
 }
 
  else
 {
  req.open("GET", url, true);
  req.send(null);
  Request.reqList.push(req);
 }
 
 loading(); 
 return req;
}

Request.clearReqList = function()
{
 var ln = Request.reqList.length;
 for (var i=0; i<ln; i++) {
  var req = Request.reqList[i];
  if (req)
  {
  try
  {
   delete req;
  } catch(e) {}
  }
 }
 Request.reqList = [];
}

Request.sendPOST = function(url, data, callback, clear, callback2)
{
 if (clear)
  Request.clearReqList();
 Request.send(url, "POST", callback, data, true, callback2);
}

Request.sendGET = function(url, callback, args, clear, callback2)
{
 if (clear)
  Request.clearReqList();
 return Request.send(url, "GET", callback, args, false, callback2);
}

function loading()
{
var div = $("loadingflag");
if(div)
div.style.display ="";
}

function afterLoading()
{
var div = $("loadingflag");
if(div)
div.style.display ="none";
}