正在浏览:Ajax异步(请求)提交类 支持跨域
            复制代码 代码如下:
/**//* 
异步请求类 
作者:吾非无心 
创建时间: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代理) 
*/ 
function IsOuterURL(str_url){ 
var strRegex = "((https|http)://)([\\w-]+\\.)+[\\w-]+.([^a-z])(/[\\w-./?%&=]*)?|((https|http)://)[a-zA-Z0-9\\-\\.][\\w-]+.([^a-z])(/[\\w-./?%&=]*)?"; 
var re=new RegExp(strRegex); 
if (re.test(str_url)){ 
return (true); 
}else{ 
return (false); 
} 
} 
var LeesAjaxRequest= 
{ 
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 (typeof XMLHttpRequest != 'undefined') 
{ 
this.m_LeesAjaxHttpRequest = new XMLHttpRequest(); 
} 
else if (typeof ActiveXObject != 'undefined') 
{ 
this.m_LeesAjaxHttpRequest = new ActiveXObject('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) 
{ 
var o=_this.list[0]; 
_this.list.splice(0,1); 
_this.getUrl(o.method,o.url,o.params,o.successFun,o.failureFun,o.headers); 
} 
} 
}; 
var vPara=""; 
if(typeof params=="string") 
{ 
vPara=escape(params); 
} 
else if(params) 
{ 
try 
{ 
for(var e in params) 
{ 
if(vPara.length<1) 
vPara=e+"="+escape(params[e]); 
else 
vPara+="&"+e+"="+escape(params[e]); 
} 
} 
catch(ex) 
{} 
} 
if(headers) 
{ 
try 
{ 
for(var h in headers) 
{ 
this.m_LeesAjaxHttpRequest.setRequestHeader(h.replace("_","-"),headers[h]); 
} 
} 
catch(ex) 
{ 
} 
} 
this.m_LeesAjaxHttpRequest.send(vPara); 
} 
} 
}, 
Post:function(o) 
{ 
var vMethod=o.method||"post"; 
var vUrl=o.url||null; 
var vParams=o.params||""; 
var vSuccess=o.success||null; 
var vFailure=o.failure||null; 
var vHeaders=o.headers||null; 
if(vUrl==null||vUrl.length<1) 
{ 
//alert("异步请求格式错误"); 
return; 
} 
this.getUrl(vMethod,vUrl,vParams,vSuccess,vFailure,vHeaders); 
}, 
Get:function(o) 
{ 
var vMethod=o.method||"get"; 
var vUrl=o.url||null; 
var vParams=o.params||""; 
var vSuccess=o.success||null; 
var vFailure=o.failure||null; 
var vHeaders=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){ 
var jsOBJ=document.createElement("script"); 
jsOBJ.text=ojs.responseText; 
document.documentElement.appendChild(jsOBJ); 
},//end success 
headers:{Content_Type:"application/x-javascript"} 
});//end Get 
}//end if ( !_this.loadedJS.isInArray(vJS)) 
}//end if(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){ 
var rObj=eval("("+o.responseText+")"); 
var tObj=new LeesBaseWindow(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="0 0"; 
tObj.contentWindow.onmouseover=function(){ 
this.style.backgroundPosition="0 -"+rObj.height; 
_this.setShowWindow(obj); 
} 
tObj.contentWindow.onmouseout=function(){ 
this.style.backgroundPosition="0 0"; 
} 
}, 
failure:function(){ 
alert("生成ToolTip时出错"); 
} 
});