<SCRIPT LANGUAGE="JavaScript">
<!--

/**//**
* AJAX对象封装
* @author: trs 应用产品开发部 ly
* @date: 2005-11-11
*/
var com=new Object();
com.trs=new Object();
com.trs.cds=new Object();
com.trs.cds.js=new Object();
com.trs.cds.js.ajax=new Object();//命名空间

//请求状态
com.trs.cds.js.ajax.READY_STATE_UNINITIALIZED=0;
com.trs.cds.js.ajax.READY_STATE_LOADING=1;
com.trs.cds.js.ajax.READY_STATE_LOADED=2;
com.trs.cds.js.ajax.READY_STATE_INTERACTIVE=3;
com.trs.cds.js.ajax.READY_STATE_COMPLETE=4;
//构造函数
com.trs.cds.js.ajax.AjaxRequest=function()


{
//申请XMLHttpRequest
this.initRequest=function()

{
if(typeof window.XMLHttpRequest!='undefined')

{
// branch for native XMLHttpRequest object

try
{
this.req = new XMLHttpRequest();

} catch(e)
{
this.req = false;
}
}
else if(window.ActiveXObject)

{
// branch for IE/Windows ActiveX version
try

{
this.req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e)

{
try

{
this.req = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e)

{
this.req = false;
}
}
}
};
//返回XML对象
this.getResponseXML=function()

{
if(this.req)return this.req.responseXML;
};
//返回Text对象
this.getResponseText=function()

{
if(this.req)return this.req.responseText;
};
//设置URL
this.setUrl=function(url)

{
this.url=(url)?url:"";
};
//设置Method:取值范围有GET,POST,HEAD等
this.setMethod=function(method)

{
this.method=(method)?method:'GET';
};
//设置内容加载完成的执行体,如setOnLoad("a('abc')"),将在请求完成时执行a('abc');这样的子句
this.setOnLoad=function(onload)

{
this.onload=onload;
if(this.onload.indexOf('(')==-1)

{
this.onload=this.onload+"()";
}
};
//设置同步或者异步:true,异步;flase,同步
this.setAasynchronous=function(asy)

{
this.asynchronous=(asy)?asy:true;
};
//设置POST方式下提交的参数
this.setParams=function(params)

{
this.params=(params)?params:null;
};
//设置在内容加载完成前的执行体
//@see setOnLoad
this.setBeforeLoad=function(beforeload)

{
this.beforeload=beforeload;
if(this.beforeload!=null&&this.beforeload.indexOf('(')==-1)

{
this.beforeload=this.beforeload+"()";
}
};
//设置在内容加载时出错的执行体
//@see setOnLoad
this.setOnError=function(error)

{
this.onerror=(error)?error:this.onerror;
if(onerror!=null&&this.onerror.indexOf('(')==-1)

{
this.onerror=this.onerror+"()";
}
};
//设置请求的头信息
this.setRequestHeader=function(key,value)

{
if(this.req)

{
this.req.setRequestHeader(key,value);
}
};
//加载内容
this.load=function()

{
if (this.req)

{
try

{
var loader=this;
if(this.asynchronous)//异步

{
this.req.onreadystatechange=function()

{
loader.onReadyState.call(loader);
}
this.req.open(this.method,this.url,true);
this.req.send(this.params);
}
else//同步

{
this.req.open(this.method,this.url,false);
loader.onReadyState().call(loader);
this.req.send(this.params);
}
}catch (err)

{
eval(this.error);;
}
}
};
//请求状态变化时的执行体
this.onReadyState=function()

{
var status=this.req.readyState;
if (status==com.trs.cds.js.ajax.READY_STATE_COMPLETE)//加载完成

{
var httpStatus=this.req.status;
if (httpStatus==200 || httpStatus==0)//正确返回

{
eval(this.onload);
}

else
{
eval(this.error);
}
}
else//加载未完成

{
if(this.beforeload)

{
eval(this.beforeload);;
}
}
};
//缺省出错执行体
this.defaultError=function()

{
alert("error fetching data!"
+"\n\nreadyState:"+this.req.readyState
+"\nstatus: "+this.req.status
+"\nheaders: "+this.req.getAllResponseHeaders());
};
this.url=null;
this.req=false;
this.method='GET';
this.asynchronous=true;
this.params=null;
this.onload=null;
this.beforeload=false;
this.onerror="this.defaultError()";
this.initRequest();
};
var abc=new com.trs.cds.js.ajax.AjaxRequest();
abc.setUrl("http://bbs.51js.com/rss.php?fid=1");
abc.setBeforeLoad("c");//c()为js function,可以指定任意参数
abc.setOnLoad("a(this,'abc')");//a为js function,其参数this为abc对象的代替,'abc'为另一参数,可以指定任意参数
abc.load();

function a(ajaxRequest,abc)


{
alert(abc);
alert(ajaxRequest.getResponseText());
}

function c()


{
alert("loading");
}
//-->
</SCRIPT>

http://www.52hai.com/2005/showlog.asp?log_id=1905&cat_id=5
posted on
2007-02-02 17:25
mbskys
阅读(
336)
评论()
收藏
举报