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时出错");

}

});

时间: 2024-10-27 18:00:11

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

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

复制代码 代码如下: /**//* 异步请求类 作者:吾非无心 创建时间:2009.2 --------------------------------------------------------------------------------------------------------------------------------- 修改记录: 2009.4.27--添加 URL 检测功能,如果是"http://xxxx.xxx.xx.xx/.."这样的格式,使用系统提供的

如果要用ajax跨域请求服务器数据,服务器是否要设置支持跨域

问题描述 如果要用ajax跨域请求服务器数据,服务器是否要设置支持跨域 如果要用ajax跨域请求服务器数据,服务器是否要设置支持跨域? 解决方案 是的,如果是跨域请求的话,服务器返回Json数据的格式也是不同的. 所以服务器也是需要支持跨域的. 如:服务器返回普通Json格式为(不跨域) { "code": "0", "content": "我是返回内容" } 那么Jsonp的返回格式则是(跨域) callback({ &qu

wcf rest ajax post 提交的不能跨域

问题描述 wcf rest ajax post 提交的不能跨域 今天调试代码的时候发现一个跨域问题,在IE上运行正确,但是在Chrome和Firefox上提示"Error"错误是 所用的 getPreventDefault() 已不赞成使用.请使用 defaultPrevented 替代. jquery.js:5375:0已阻止跨源请求:同源策略禁止读取位于 http://192.168.1.105:3721/OrderServices/ 的远程资源.(原因:来自 CORS 预检通道的

js判断请求的url是否可访问,支持跨域判断的实现方法_javascript技巧

如下所示: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <meta name="keywords" content="js判断URL是否可访问" /> <t

SpringMVC环境下实现的Ajax异步请求JSON格式数据_AJAX相关

一 环境搭建 首先是常规的spring mvc环境搭建,不用多说,需要注意的是,这里需要引入jackson相关jar包,然后在spring配置文件"springmvc-servlet.xml"中添加json解析相关配置,我这里的完整代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schem

Ajax异步请求技术实例讲解

AJAX的全称是Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX不是新的编程语言,而是一种使用现有标准的新方法.ajax是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下. ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. ajax是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换.ajax可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分

SpringMVC环境下实现的Ajax异步请求JSON格式数据

一 环境搭建 首先是常规的spring mvc环境搭建,不用多说,需要注意的是,这里需要引入jackson相关jar包,然后在spring配置文件"springmvc-servlet.xml"中添加json解析相关配置,我这里的完整代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schem

ajax-Chrome处理本地Ajax异步请求的问题

问题描述 Chrome处理本地Ajax异步请求的问题 --allow-file-access-from-files 加了这个还是会显示XMLHttpRequest cannot find file怎么回事 求解 解决方案 请求的文件不存在也会报这种错误,自己检查下路径是否存在,文件名是否拼写正确 解决方案二: 解决办法是给chrome添加启动参数:--allow-file-access-from-files ,这样本地ajax请求就不会报跨域错误了.(注意如果给chrome添加多个启动参数,每个

如何让服务器支持跨域呢?

如何让服务器本身支持跨域请求呢? 如果服务器是apache (1)修改http服务的配置文件:C:\wamp\bin\apache\Apache2.4.4\conf\httpd.conf 把LoadModule headers_module modules/mod_headers.so 前面的注释删除. (2)添加Header set Access-Control-Allow-Origin * <Directory />     AllowOverride none     Require a