Ajax首接触

        很早以前,我在自己做项目的时候就使用过Ajax技术,但是当时对于其机制就是搞部清楚,所以也都是复用人家写的东西 。所以当时也只是知道了Ajax这个东西,和Ajax可以给我的Web编程带来的好处罢了。今天,我在新的公司,由于需求的要求,必须使用Ajax,经过几天的实践,终于对Ajax又有了新的了解。虽然现在有很多人都使用prototype,里面也很好的封装了Ajax,但是对于部分项目而言(特别是那种很早以前就开始了,但是确永远做不完的项目,比如公司自产自用的ERP),没有必要每次去加载这么一个35KB左右的文件(毕竟效率上会受影响)。所以公司决定自己写。代码如下:

  定义

var  XMLHttpReq     =   false ;

 

/*-------------------------------------Ajax 基础函数-------------------------------------*/
//  建立XMLHttpRequest对象
function  CreateXMLHttpRequest()
{
    
if(window.XMLHttpRequest)
    
{
        
// Is Mozilla Browse
        XMLHttpReq = new XMLHttpRequest();
    }

    
else if (window.ActiveXObject)
    

        
// IE Browse
        try
        
{
            
            XMLHttpReq 
= new ActiveXObject("Msxml2.XMLHTTP");
        }

        
catch(e)
        
{
            
try
            
{
                
                XMLHttpReq 
= new ActiveXObject("Microsoft.XMLHTTP");
            }

            
catch(e){}
        }

    }

}


// Send request' function.( POST )
//
Url:              send url address.
//
IsWait:           Is waitting or return now.
//
ResponseFunction: process response's function.
//
XmlObj:           send xml data object.
function  SendRequestPost( Url,IsWait,ResponseFunction,XmlObj )
{
    CreateXMLHttpRequest();
    XMLHttpReq.open( 
"POST",Url,IsWait );
    XMLHttpReq.onreadystatechange 
= ResponseFunction;//define response's function
    XMLHttpReq.setRequestHeader( "Content-Type","application/x-www-form-urlencoded" );
    XMLHttpReq.send( XmlObj );
//Send Request
}


// Send request' function.( GET )
//
Url:              send url address.
//
IsWait:           Is waitting or return now.
//
ResponseFunction: process response's function.
//
ArgString:        send url's argument string.
function  SendRequestGet( Url,IsWait,ResponseFunction,ArgString ) 
{
    CreateXMLHttpRequest();
    XMLHttpReq.onreadystatechange 
= ResponseFunction;//define response's function
    if( ArgString == null )
    
{
        XMLHttpReq.open( 
"GET", Url, IsWait );
    }

    
else
    
{
        XMLHttpReq.open( 
"GET", Url + "?" + ArgString , IsWait );
    }

    XMLHttpReq.send(
null);
}


// Invoke function.
//
SendType:         send type.( GET or POST )
//
UrlPath:          send url address.
//
IsWait:           Is waitting or return now.( true or false )
//
DataType:         send argument's data type.( DataMail or DataWork )
//
ResponseFunction: process response's function.
function  RunSend( SendType,UrlPath,IsWait,DataType,ResponseFunction )
{    
    
var url = unescape( UrlPath.replace(/+/g, " ") );    
    
var dataobj = CreateData( DataType );        
    
if( SendType == "POST" )
    
{
        SendRequestPost( url,IsWait,ResponseFunction,dataobj );
    }

    
else if( SendType == "GET" )
    
{
        SendRequestGet( url,IsWait,ResponseFunction,dataobj );
    }

}

 

以后每次调用RunSend函数,SendType传入“POST”或者“GET”,UrlPath为Ajax获取页面地址,IsWait为是否等待请求,DataType为处理数据类型,ResponseFunction为响应函数。

 

// Creat data object.
function CreateData( DataClassType )
{    
    var dataObj 
= "";
    
switch ( DataClassType ) 
    
{
        
case "MailPage":            
            dataObj 
= CreateMailPage();    
            
break;
    }

    
return dataObj;
}

 

 

function f()
{
           
if(XMLHttpReq.readyState == 4)
    

        
//judgement object state
        if(XMLHttpReq.status == 200)
        

            alert(
"Ajax");
        }

    }

}

 

 

function  CreateMailPage()
{    
    
var dataObj = "DataType=MailPage&page=1“;
    return dataObj;
}

 

然后调用

RunSend( "GET",url,true,"MailPage",f ); 

 

就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值