手机
当前位置:查字典教程网 >编程开发 >AJAX相关 >Ajax异步(请求)提交类 支持跨域
Ajax异步(请求)提交类 支持跨域
摘要:复制代码代码如下:/**//*异步请求类作者:吾非无心创建时间:2009.2--------------------------------...

复制代码 代码如下:

/**//*

异步请求类

作者:吾非无心

创建时间: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时出错");

}

});

【Ajax异步(请求)提交类 支持跨域】相关文章:

jquery中的ajax同步和异步详解

Ajax实现评论提交

Ajax请求session失效该如何解决

发布三个ajax相关的函数,包括无刷新提交表单等

关于多个Ajax请求执行返回先后的问题示例探讨

Ajax简单的异步交互及Ajax原生编写

ajax应用

Ajax方式删除表格一行数据示例代码

json格式的Ajax提交示例代码

Ajax异步方式实现登录与验证

上一篇: 四步学会 Ajax
精品推荐
分类导航