/*
Ajax 类
sUrl : 目标 URL
sQueryString : 提交变量
callbackFunc : 回调函数
callbackParams : 回调函数参数
sRecvType : 返回值格式 ( 0: 文本, 1: XML );
*/

function Ajax ( sUrl, sQueryString, callbackFunc, callbackParams, sRecvType )
{
    
this.Url = sUrl;
    
this.QueryString = sQueryString != null ? sQueryString : '';
    
this.response; // 返回值

    
this.XmlHttp = this.createXMLHttpRequest ();
    
if ( this.XmlHttp == null )
    {
        alert ( 
"网络连接出错, 请重试!" );
        
return;
    }
    
var objxml = this.XmlHttp;
    objxml.onreadystatechange 
= function ()
    {
        Ajax.handleStateChange ( objxml, sRecvType, callbackFunc, callbackParams )
    }
}

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 = '';
    
if ( this.QueryString != null && typeof ( this.QueryString ) != 'string' )
    {
        
var elements = this.QueryString.elements;
        
var pairs = new Array();
        
for(var i=0;i<elements.length;i++){
            
if((name=elements[i].name)&&(value = elements[i].value)){
                pairs.push(name 
+ "=" + encodeURIComponent(value));
            }
        }
        queryString 
= pairs.join ("&");
    }
    
else
    {
        queryString 
= this.QueryString;
    }
    
return queryString;
}

Ajax.prototype.get 
= function ()
{
    sUrl 
= this.Url;
    
var queryString = sUrl + ( sUrl.indexOf ('?'> 0 ? '&' : '?' ) + this.createQueryString();
    
this.XmlHttp.open ( "GET", queryString, true );
    
this.XmlHttp.send ( null );
}

Ajax.prototype.post 
= function ()
{
    
var sUrl = this.Url;
    
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, sRecvType, callbackFunc, callbackParams )
{
    
if ( XmlHttp.readyState == 4 )
    {
        
if ( XmlHttp.status == 200  )
        {
            Response 
= sRecvType ? XmlHttp.responseXML : XmlHttp.responseText;
            
if ( callbackFunc != null )
            {
                callbackFunc ( Response, callbackParams );
            }
        }
        
else
        {
            
// alert ( "您还没有登陆或者登陆已经超时, 请登陆后重试!" );
        }
    }

posted on 2009-07-21 09:50  钱途无梁  阅读(639)  评论(0编辑  收藏  举报