zl程序教程

您现在的位置是:首页 >  前端

当前栏目

Ajax异步(请求)提交类支持跨域

AJAX异步跨域 支持 请求 提交
2023-06-13 09:14:11 时间
复制代码代码如下:

/**//*
异步请求类

作者:吾非无心
创建时间:2009.2
---------------------------------------------------------------------------------------------------------------------------------

修改记录:

2009.4.27——添加URL检测功能,如果是“http://xxxx.xxx.xx.xx/..”这样的格式,使用系统提供的“/getUrl.aspx”进行获取
以解决跨域问题。
getUrl.aspx的主要参数有两个:1、url值为目标URL(URL中可以带参数)——必须;2、method值为代理使用的方法(可选)
如果method为空,默认采用POST方法进行代理;如果FORM参数为空(即request.content-length=0),则自动设置为GET方法;
(注:getUrl.aspx在2009.4.27重新进行了设计,在原完成代理的基础上,新增了Cookie代理)
*/
functionIsOuterURL(str_url){
varstrRegex="((https|http)://)([\\w-]+\\.)+[\\w-]+.([^a-z])(/[\\w-./?%&=]*)?|((https|http)://)[a-zA-Z0-9\\-\\.][\\w-]+.([^a-z])(/[\\w-./?%&=]*)?";
varre=newRegExp(strRegex);

if(re.test(str_url)){
return(true);
}else{
return(false);
}
}
varLeesAjaxRequest=
{
list:[],
m_LeesAjaxHttpRequest:null,
isWorking:false,
getUrl:function(method,url,params,successFun,FailureFun,headers)
{
if(url.length<1)
return;
if(this.m_LeesAjaxHttpRequest==null)
{
if(typeofXMLHttpRequest!="undefined")
{
this.m_LeesAjaxHttpRequest=newXMLHttpRequest();
}
elseif(typeofActiveXObject!="undefined")
{
this.m_LeesAjaxHttpRequest=newActiveXObject("Microsoft.XMLHTTP");
}

}
if(this.m_LeesAjaxHttpRequest)
{
if(this.isWorking)
{
this.list[this.list.length]={method:method,url:url,params:params,successFun:successFun,failureFun:FailureFun,headers:headers};
}
else
{
this.isWorking=true;
if(IsOuterURL(url))
this.m_LeesAjaxHttpRequest.open(method,"/geturl.aspx?url="+escape(url)+"&method="+method,true);//true为异步
else
this.m_LeesAjaxHttpRequest.open(method,url,true);//true为异步
var_this=this;
this.m_LeesAjaxHttpRequest.onreadystatechange=function()
{
if(4==_this.m_LeesAjaxHttpRequest.readyState)
{
if(200==_this.m_LeesAjaxHttpRequest.status)
{
if(successFun)
{
try{
successFun(_this.m_LeesAjaxHttpRequest);
}
catch(ex)
{}
}
}
else
{
if(FailureFun)
{
try{
FailureFun(_this.m_LeesAjaxHttpRequest);
}
catch(ex)
{}
}
}
_this.isWorking=false;
if(_this.list.length>0)
{
varo=_this.list[0];
_this.list.splice(0,1);
_this.getUrl(o.method,o.url,o.params,o.successFun,o.failureFun,o.headers);
}
}
};
varvPara="";
if(typeofparams=="string")
{
vPara=escape(params);
}
elseif(params)
{
try
{
for(vareinparams)
{
if(vPara.length<1)
vPara=e+"="+escape(params[e]);
else
vPara+="&"+e+"="+escape(params[e]);
}
}
catch(ex)
{}
}
if(headers)
{
try
{
for(varhinheaders)
{
this.m_LeesAjaxHttpRequest.setRequestHeader(h.replace("_","-"),headers[h]);
}
}
catch(ex)
{
}
}
this.m_LeesAjaxHttpRequest.send(vPara);
}
}
},
Post:function(o)
{
varvMethod=o.method||"post";
varvUrl=o.url||null;
varvParams=o.params||"";
varvSuccess=o.success||null;
varvFailure=o.failure||null;
varvHeaders=o.headers||null;
if(vUrl==null||vUrl.length<1)
{
//alert("异步请求格式错误");
return;
}
this.getUrl(vMethod,vUrl,vParams,vSuccess,vFailure,vHeaders);
},
Get:function(o)
{
varvMethod=o.method||"get";
varvUrl=o.url||null;
varvParams=o.params||"";
varvSuccess=o.success||null;
varvFailure=o.failure||null;
varvHeaders=o.headers||null;
if(vUrl==null||vUrl.length<1)
{
//alert("异步请求格式错误");
return;
}
this.getUrl(vMethod,vUrl,vParams,vSuccess,vFailure,vHeaders);
}
}
/**//*异步请求类END*/


使用示例:
复制代码代码如下:

1.//动态装载JS文件
if(vJS&&vJS.length>3)
{
if(!_this.loadedJS.isInArray(vJS))
{
_this.loadedJS[_this.loadedJS.length]=vJS;
LeesAjaxRequest.Get({
url:vJS,
success:function(ojs){
varjsOBJ=document.createElement("script");
jsOBJ.text=ojs.responseText;
document.documentElement.appendChild(jsOBJ);
},//endsuccess
headers:{Content_Type:"application/x-javascript"}
});//endGet
}//endif(!_this.loadedJS.isInArray(vJS))
}//endif(vJS&&vJS.length>3)

2.//添加到工具提示竖条上
LeesAjaxRequest.Post({url:"/getToolTip.aspx",
params:{tooltip:title},
headers:{Content_Type:"application/x-www-form-urlencoded;charset=utf-8"},//如果使用Post方法,必须传入此参数,charset可以为别的
success:function(o){
varrObj=eval("("+o.responseText+")");
vartObj=newLeesBaseWindow(rObj["width"]+2,rObj["height"]+1,"","","","","",1,"");
tObj.ShowWindow(vToolBarSlider.window);
tObj.contentWindow.style.backgroundImage="url("+rObj["image"]+")";
tObj.contentWindow.style.marginLeft="1px";
tObj.contentWindow.style.backgroundRepeat="no-repeat";
tObj.contentWindow.style.backgroundPosition="00";
tObj.contentWindow.onmouseover=function(){
this.style.backgroundPosition="0-"+rObj.height;
_this.setShowWindow(obj);
}
tObj.contentWindow.onmouseout=function(){
this.style.backgroundPosition="00";
}
},
failure:function(){
alert("生成ToolTip时出错");
}
});