收集一些ajax类(希望对大家有用处)

本人在网站看见好多ajax的类所以我就把收集起来,给大家多一些选择,希望给大家带来帮助

第一个ajax类
在给blog加上无刷新搜索和即时验证检测后,又看了下代码,感觉太过麻烦,就把XMLHttpRequest请求封装到一个类里面,用起来方便多了,不用记那么多代码,什么创建XMLHttpRequest对象什么的,这部分代码也是重用性比较高的~已经打包,在日志的末尾下载。
要看效果的话点开侧边栏里的日志搜索,里面有一个无刷新搜索,就是了,或者在阅读日志或留言簿里的注册码那里有即时检测,如果不输入验证码或者输错了验证码,输入框都会变红的'
类名:AJAXRequest
创建方法:var ajaxobj=new AJAXRequest;,如果创建失败则返回false
属性:method  -  请求方法,字符串,POST或者GET,默认为POST
   url         -  请求URL,字符串,默认为空
   async     -  是否异步,true为异步,false为同步,默认为true
   content -  请求的内容,如果请求方法为POST需要设定此属性,默认为空
   callback  - 回调函数,即返回响应内容时调用的函数,默认为直接返回,回调函数有一个参数为XMLHttpRequest对象,即定义回调函数时要这样:function mycallback(xmlobj)
方法:send     -  发送请求,无参数
一个例子:
[复制此代码]CODE:
<script type="text/javascript" src="ajaxrequest.js"></script>
<script type="text/javascript">
var ajaxobj=new AJAXRequest;    // 创建AJAX对象
ajaxobj.method="GET";   // 设置请求方式为GET
ajaxobj.url="default.asp"  // URL为default.asp
// 设置回调函数,输出响应内容
ajaxobj.callback=function(xmlobj) {
     document.write(xmlobj.responseText);
}
ajaxobj.send();    // 发送请求

[复制此代码]CODE:
// AJAX类
function AJAXRequest() {
    var xmlObj = false;
    var CBfunc,ObjSelf;
    ObjSelf=this;
    try { xmlObj=new XMLHttpRequest; }
    catch(e) {
        try { xmlObj=new ActiveXObject("MSXML2.XMLHTTP"); }
        catch(e2) {
            try { xmlObj=new ActiveXObject("Microsoft.XMLHTTP"); }
            catch(e3) { xmlObj=false; }
        }
    }
    if (!xmlObj) return false;
    this.method="POST";
    this.url;
    this.async=true;
    this.content="";
    this.callback=function(cbobj) {return;}
    this.send=function() {
        if(!this.method||!this.url||!this.async) return false;
        xmlObj.open (this.method, this.url, this.async);
        if(this.method=="POST") xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        xmlObj.onreadystatechange=function() {
            if(xmlObj.readyState==4) {
                if(xmlObj.status==200) {
                    ObjSelf.callback(xmlObj);
                }
            }
        }
        if(this.method=="POST") xmlObj.send(this.content);
        else xmlObj.send(null);
    }
}

第二个ajax类

程序代码:

<script type="text/javascript">
function Ajax(sUrl,sRecvTyp,sQueryString,oResultFunc) {
this.Url = sUrl;
this.QueryString = sQueryString;
this.XmlHttp = this.createXMLHttpRequest();
if (this.XmlHttp == null) {
 alert("erro");
return;
}
var objxml = this.XmlHttp;
objxml.onreadystatechange = function (){Ajax.handleStateChange(objxml,sRecvTyp,oResultFunc)};
}

Ajax.prototype.createXMLHttpRequest = function() {
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
try { return new XMLHttpRequest(); } catch(e) {}
return null;
}

Ajax.prototype.createQueryString = function () {
var queryString = this.QueryString;
return queryString;
}

Ajax.prototype.get = function () {
sUrl = this.Url;
var queryString = sUrl+"?timeStamp=" + new Date().getTime() + "&" + this.createQueryString();
this.XmlHttp.open("GET",queryString,true);
this.XmlHttp.send(null);
}

Ajax.prototype.post = function() {
sUrl = this.Url;
var sUrl = sUrl + "?timeStamp=" + new Date().getTime();
var queryString = this.createQueryString();
this.XmlHttp.open("POST",sUrl,true);
this.XmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
this.XmlHttp.send(queryString);
}

Ajax.handleStateChange = function (XmlHttp,sRecvTyp,oResultFunc) {
if (XmlHttp.readyState == 4) {
 if (XmlHttp.status == 200) {
 oResultFunc(sRecvTyp?XmlHttp.responseXML:XmlHttp.responseText);
 } else {
 alert("您所请求的页面有异常。");
 }
}
}
</script>

使用方法:

<script type="text/javascript">
var classAjax = new Ajax(sUrl,sRecvTyp,sQueryString,oResultFunc);
classAjax.post();//post方式发送数据
classAjax.get();//get方式发送数据
//sUrl发送地址
//sRecvTyp 接受数据类型:0为xml 1为text
//oResultFunc 返回结果处理函数
</script>

应用实例:

<script type="text/javascript">
var ajax1 = new Ajax("1.asp",0,"id="+id,bacal);
ajax1.post();
function bacal(rexm){
//返回数据处理函数;
}
</script>
第三个ajax类

YunAjax.js: 
        /// <summary> 
        /// 调用ajax,返回服务器端的原始数据 
        /// </summary> 
        /// <param name="url">远程调用路径</param> 
        /// <param name="pars">附加到路径的url参数</param> 
        /// <param name="method">请求方式,get或post</param> 
        /// <param name="onComplete">此变量是一个函数,数据请求成功后要调用的函数</param> 
        /// <param name="asynchronous">是否异步调用,true和false</param> 
function YunAjax(url,pars,method,onComplete,asynchronous) 

         var xmlHttp; 
         if(window.ActiveXObject) 
            { 
                try 
                { 
                    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
                } 
                catch(e) 
                { 
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
                } 
            } 
            else if(window.XMLHttpRequest) 
            { 
                xmlHttp = new XMLHttpRequest(); 
            } 
         
         
            xmlHttp.onreadystatechange = function() 
            { 
                if(xmlHttp.readyState == 4) 
                { 
                    onComplete(xmlHttp); 
                } 
            } 
         
            //默认用get提交 
            if(method.toLowerCase() == "get") 
            { 
                url = url+"?"+pars; 
                xmlHttp.open("GET",url,asynchronous); 
                xmlHttp.send(null); 
            } 
            else 
            { 
                xmlHttp.open("POST",url,asynchronous); 
                xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
                xmlHttp.send(pars); 
            } 

 
第四个ajax类

//AJAX类
function AjaxClass()
{
    var XmlHttp = false;
    try
    {
        XmlHttp = new XMLHttpRequest();        //FireFox专有
    }
    catch(e)
    {
        try
        {
            XmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
        }
        catch(e2)
        {
            try
            {
                XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e3)
            {
                alert("你的浏览器不支持XMLHTTP对象,请升级到IE6以上版本!");
                XmlHttp = false;
            }
        }
    }

    var me = this;
    this.Method = "POST";
    this.Url = "";
    this.Async = true;
    this.Arg = "";
    this.CallBack = function(){};
   
    this.Send = function()
    {
        if (this.Url=="")
        {
            return false;
        }
        if (!XmlHttp)
        {
            return IframePost();
        }

        XmlHttp.open (this.Method, this.Url, this.Async);
        if (this.Method=="POST")
        {
            XmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        }
        XmlHttp.onreadystatechange = function()
        {
            if (XmlHttp.readyState==4)
            {
                var Result = false;
                if (XmlHttp.status==200)
                {
                    var rec = new ActiveXObject("ADODB.RecordSet");
                    rec.Fields.Append("DDD",201,1);
                    rec.open();
                    rec.addNew();
                    rec(0).appendChunk(XmlHttp.responseBody);
                    rec.update();
                    Result = rec(0).value;
                    rec.Close();
                    rec = null;
                }
                XmlHttp = null;
               
                me.CallBack(Result);
            }
        }
        if (this.Method=="POST")
        {
            XmlHttp.send(this.Arg);
        }
        else
        {
            XmlHttp.send(null);
        }
    }
   
    //Iframe方式提交
    function IframePost()
    {
        var Num = 0;
        var obj = document.createElement("iframe");
        obj.attachEvent("onload",function(){ me.CallBack(obj.contentWindow.document.body.innerHTML); obj.removeNode() });
        obj.attachEvent("onreadystatechange",function(){ if (Num>=5) {alert(false);obj.removeNode()} });
        obj.src = me.Url;
        obj.style.display = 'none';
        document.body.appendChild(obj);
    }
}

/*----------, , ------------------调用方法------------------------------

var Ajax = new AjaxClass();            // 创建AJAX对象
    Ajax.Method = "POST";           // 设置请求方式为POST
    Ajax.Url = "default.asp"        // URL为default.asp
    Ajax.Async = true;            // 是否异步
    Ajax.Arg = "abc";            // POST的参数

    Ajax.CallBack = function(str)        // 回调函数
    {
        document.write(str);
    }
    Ajax.Send();            // 发送请求
--------------------------------------------------------------------*/

第五个ajax类

 

ajax.js  
   
  /**  
    *   取得当前页面的url  
    *   可以在调用ajax_query前修改  
    **/  
  var   url   =   location.href.substr(0,   location.href.length-location.search.length);  
   
  /**  
    *   给Function对象添加一个取得函数名的方法  
    **/  
  Function.prototype.Name   =   function()   {  
      var   s   =   Function.prototype.Name.caller.toString();  
      return   s.split(/[/r/n]+/)[0].replace(/function/s+(/w+).+/g,   '$1');  
  }  
   
  /**  
    *   函数   $  
    *   功能   获取dhtml对象  
    *   参数   e   待查找的对象id或name  
    *   返回   成功:对象   失败:null  
    */  
  function   $(e)   {  
      var   tag   =   document.getElementById(e);  
      if(tag)   return   tag;  
      tag   =   document.getElementsByName(e);  
      if(tag.tagName   ==   undefined)   return   null;  
      return   tag;  
  }  
   
  /**  
    *   建立并返回XMLHTTP对象  
    *   说明   虽然Msxml2.XMLHTTP有着比Microsoft.XMLHTTP更优秀的性能,但是在配置较低的  
    *             环境下并不能正常工作。当确认能够正常工作时,再删去注释  
    **/  
  function   create_http()   {  
  if   (window.XMLHttpRequest)   return(new   XMLHttpRequest());  
  var   arr_t   =   new   Array(  
  "MSXML2.XMLHTTP.4.0",    
  "MSXML2.XMLHTTP.3.0",    
  "MSXML2.XMLHTTP.2.6",    
  // "MSXML2.XMLHTTP",  
  "Microsoft.XMLHTTP",    
  "MSXML.XMLHTTP"  
  );  
  for(var   i=0;   i<arr_t.length;   i++)   {  
  try   {  
  xmlhttp_ver   =   arr_t[i];  
  return   new   ActiveXObject(arr_t[i]);  
  }catch(e)   {}  
  }  
  return(null);  
  }  
   
   
  /**  
    *   函数   ajax_query  
    *   功能   向服务器发送指令,并处理返回数据  
    *   参数  
    *       method   服务器端方法名  
    *       tag       接受返回数据的dhml对象名,缺省时由服务器决定处理方式  
    *       其他     向服务器端传递的其他参数,可缺省  
    **/  
  function   ajax_query(method,   tag)   {  
  /**  
    *   尝试创建XMLHTTP对象  
    **/  
  var   xmlhttp;  
  xmlhttp   =   create_http();  
  if(!   xmlhttp)   {  
  alert('错误!   缺少连接组件');  
  return;  
  }  
   
  if(arguments.length   ==   0)   {  
  alert(Function.Name()+'至少需要一个方法名');  
  return;  
  }  
   
  var   data   =   'ajax='   +   method;  
  var   i   =   1;  
  if(tag   &&   $(tag))   {  
  data   =   data   +   '&ajaxtag='   +   tag;  
  i++;  
  }  
   
  /**  
    *   构造参数串  
    *   使用了encodeURIComponent函数对参数串进行编码  
    *   说明  
    *       encodeURIComponent函数是将传入的参数转换成utf-8编码以后再做URL编码,可以在  
    *   服务器端自动完成URL解码。注意URL解码后的是utf-8编码的串,需要自行完成到  
    *             所需编码的转换  
    *       escape函数是将传入的参数转换成unicode编码以后再做URL编码,在服务器端一般不  
    *             能全部完成URL解码。参数中的汉字将以%uhhhh的形式出现,处理上稍嫌麻烦  
    **/  
  for(;   i   <   arguments.length;   i++)   {  
  data   =   data   +   '&ajaxargs[]='   +   encodeURIComponent(arguments[i]);  
  }  
   
  /**  
    *   根据参数串的长度确定传输方式  
    **/  
  var   url0   =   '';  
  var   method,   post_data;  
  if(data.length   >=   2048)   {  
  method   =   'POST';  
  url0   =   url;  
  post_data   =   data;  
  }else   {  
  method   =   "GET";  
  url0   =   url   +   '?'   +   data;  
  post_data   =   '';  
  }  
   
  /**  
    *   建立到服务器的连接  
    **/  
  xmlhttp.open(method,   url0,   true);  
   
  /**  
    *   如果是POST传输方式则设置HTTP头信息  
    **/  
  if   (method   ==   "POST")   {  
  xmlhttp.setRequestHeader("Content-Type",   "application/x-www-form-urlencoded");  
  }  
   
  /**  
    *   设置异步模式回调函数  
    **/  
  xmlhttp.onreadystatechange   =   function()   {  
  if   (!(xmlhttp.readyState   ==   4   &&   xmlhttp.status   ==   200))   {  
  return;  
  }  
  var   xml   =   xmlhttp.responseXML;  
  if(xml.xml   ==   '')   {  
  alert(xmlhttp.responseText);  
  return;  
  }  
  xml   =   xml.documentElement;  
  for(var   i=0;   i<xml.childNodes.length;   i++)   {  
  var   tag   =   '';  
  var   data   =   '';  
  /**  
    *   只处理XML文档中的action节点  
    **/  
  if(xml.childNodes[i].nodeName   ==   'action')   {  
  /**  
    *   如果节点有属性,则取属性值  
    *   约定:无论节点有多少属性和是什么名字只认定第一个属性为需要的  
    *               这个属性值将作为赋值操作的DHTML对象名  
    **/  
  if(xml.childNodes[i].attributes.length   >   0)   {  
  tag   =   xml.childNodes[i].attributes[0].value;  
  }  
  if(xml.childNodes[i].childNodes.length   >   1)   {  
  /**  
    *   Firefox需要这样取得CDATA的内容  
    **/  
  for(var   j=0;   j<xml.childNodes[i].childNodes.length;   j++)   {  
  if   (xml.childNodes[i].childNodes[j].firstChild)   {  
  data   =   xml.childNodes[i].childNodes[j].firstChild.data;  
  }  
  }  
  }else   if(xml.childNodes[i].firstChild)   {  
  /**  
    *   取得节点的内容  
    **/  
  data   =   xml.childNodes[i].firstChild.nodeValue;  
  }  
  if(tag   !=   '')   {  
  /**  
    *   判断目标对象的种类,并用相应的方式对其赋值  
    **/  
  if(!   (tag   =   $(tag)))   return;  
  switch(tag.nodeName)   {  
  case   'INPUT':  
  case   'TEATAREA':  
  tag.value   =   data;  
  break;  
  default:  
  tag.innerHTML   =   data;  
  }  
  }else   {  
  /**  
    *   执行规定的动作,data必须是合法的javascript语句  
    **/  
  try   {  
  eval(data);  
  }catch(e)   {}  
  }  
  }  
  }  
  }  
   
  /**  
    *   发送数据  
    **/  
  xmlhttp.send(post_data);  
  delete   xmlhttp;  
  }  


posted @ 2008-08-26 10:57  spring3  阅读(149)  评论(0编辑  收藏  举报