宝哥软件园

javascript Ajax类实现代码

编辑:宝哥软件园 来源:互联网 时间:2021-11-25

与现在那些埃阿斯框架比较,优劣之处?看完再说吧:1、Ajax.js复制代码代码如下:/* AJAX v1.4 HJF 2009-7-5 */函数AjaxDO(){ this .HTTP request=null this . openmethod=null//HTTP请求的方法,为获取、发布或者Head this.openURL=null//是目标网址。基于安全考虑,这个统一资源定位器只能是同网域的,否则会提示"没有权限"的错误this.openAsync=null//是指定在等待服务器返回信息的时间内是否继续执行下面的代码。如果为假的,则不会继续执行,直到服务器返回信息。默认为没错。这个ProcessRequestFunction=function(_ Httprequest){ return;} //处理返回信息的函数入口这个ProcessRequestParam=null//处理访问信息时的附加参数这个loading mg=null//正在载入的图片,一般为。可交换的图像格式动画//初始化HttpRequest这个inithttp request=function(){ var http;//尝试{//http=新的ActiveX对象(' Msxml 2 .XMLHTTP’);//} catch(e){//try {//http=new ActiveX对象(' Microsoft .XMLHTTP’);//} catch(e){//http=false;//} //}尝试{如果(窗口.ActiveX对象){ for(var I=5;我;I-){ 0尝试{ if(I==2){ http=新ActiveX对象(' Microsoft .XMLHTTP’);} else { http=new ActiveX对象(' Msxml 2。XMLHTTP ' I . 0 ');} break } catch(e){//alert(I);http=false} } }else if(窗口. XMLHttpRequest){ http=new XMLHttpRequest();if(http。override metype){ http。override metype(' text/XML ');} } } catch(e){ http=false;} if(!http){ Alert('不能创建XMLHttpRequest对象实例');返回http}这个HttpRequest=http返回http} //检测这个HttpRequest这个。checkhttprequest=function(){ if(!这个http request){ 0返回这个inithttp request();}退回这个. HttpRequest} //修改哑剧类别//http。setrequestheader(' Content-Type ',' application/x-www-form-URL编码');//如果要传文件或者邮政内容给服务器//http。setrequestheader(' Content-Type ',' text/XML ');//http。setrequestheader(' Content-Type ',' GB 2312 ');这个。setrequest header=function(mime){ if(!这个。checkhttprequest()){ return false;}试试{这个http请求。setrequest标头(' Content-Type ',mime);返回真;}捕获(e){如果(e)错误实例} {警报('修改哑剧类别错误');返回false} } } //设置状态改变的事件触发器这个。setonreadystatechange=FunHandle函数(funHandle,Param){ if(!这个。checkhttprequest()){ return false;}这个ProcessRequestFunction=funHandle;这个ProcessRequestParam=Param返回真;}这个。SetLoadIngimg=function(IMGiD){ this .loading mg=IMGiD }//建立超文本传送协议连接//open('method ',' URL'[,asyncFlag[,' userName'[,' password'])这个Open=函数(方法、网址、异步、用户名、psw){ if(!这个。checkhttprequest()){ return false;} this . Openmethod=method this . OpenURl=URL this . OpenAsync=async if((this。openmethod==null)| |((这。openmethod。touppercase()!=' GET ')(这个。openmethod。touppercase()!=' POST ')(这个。openmethod。touppercase()!='HEAD'))){ Alert('请指定超文本传送协议请求的方法,为获取、发布或者head’);返回false}如果((这。openurl==null)| |(这。openurl==' '){ Alert('请指定目标URL ');返回false}试试{这个http请求。打开这个。openmethod,this.openURL,this.openAsync,username,PSW);}捕获(e){如果(e)错误实例} {警报('无法建立超文本传送协议连接');返回false} } if(this。openmethod。touppercase()==' POST '){ if(!这个。setrequest header(' application/x-www-form-URL编码'){ Alert('修改哑剧类别失败');返回false} } if(this.openAsync){ //异步模式,程序继续执行如果(这个ProcessRequestFunction==null){ Alert('请指定处理返回信息的函数');返回false } var _ http _ request _ Ajax=this .HttpRequestvar _ this _ ajax=this这个http请求。onreadystatechange=function(){ if(_ http _ request _ Ajax。ready state==4){ if(_ http _ request _ Ajax。status==200){ _ this _ Ajax .processrequest函数(_ http _ request _ Ajax,_this_ajax .ProcessRequestParam,this_ajax .加载mg);}else{ Alert('您所请求的页面有异常。

');返回false} } } }如果(这。正在加载宏!=null){ funShow(this .加载mg);}返回true} //向服务器发出超文本传送协议请求//格式:name=值other name=其他值so=on this .Send=function(idata){ if(!这个。checkhttprequest()){ return false;} var数据=nullif(这个。openmethod。touppercase()==' POST '){ data=fun升级all(idata);}试试{这个HttpRequest.send(数据);返回真;}捕获(e){如果(e)错误实例} {警报('向服务器发出超文本传送协议请求失败');返回false} } } //处理服务器返回的信息this.getResponseText=函数(类型){ if(!这个。checkhttprequest()){ return false;}如果(这个http请求。readystate==4){ if(this .http请求。status==200){ if((type!=null)(类型。touppercase()==' XML '){ 0返回这个HttpRequest.responseXML}退回这个. Httprequest . responsetext } else { Alert('您所请求的页面有异常。

');返回false} } } //停止当前请求this.abort=function(){ if(!这个。checkhttprequest()){ return false;}如果(这个。正在加载宏!=null){ funHide(this .加载mg);}如果(这个HttpRequest.readyState0 .这个HttpRequest.readyState4){ this .http请求。abort();} } } //=====================================================================================//公共函数//==========================================================================函数$(_ obj){ var o;if (typeof(_obj)!=' string ')return _ obj;else { try { document.all尝试{ o=文档。all(_ obj);} catch(e){ return null;} } catch(ee){ try { o=document。getelementbyid(_ obj);} catch(e){ return null;} }返回o;} }擒纵函数(str){ var t=' ';var s=str。拆分(t);if(s.length=0)返回字符串;for(var I=0;长度;I){ s[I]=乐趣升级(s[I]);}返回s . join(t);}有趣擒纵函数(str){ var I=str。indexof('=');if(i==-1)返回字符串;var t=URLEncode(字符串。substr(I ^ 1));返回str.substring(0,I ^ 1)t;}函数URLEncode(str){ return encodeURIComponent(str);/*返回转义符(字符串).替换(/ /g ' ').替换(/'/g,' " ').替换(/'/g ' ').替换(///g,'/');*/}函数乐趣擒纵XML(内容){ if(内容==未定义)返回"";if(!content.length ||!content.charAt)内容=新字符串(内容);定义变量结果=' ';定义变量长度=content . length for(var I=0;一、长度;I){ var ch=content。charat(一);switch(ch){ case ' ' : result=' ';打破;案例"":结果="";打破;案例"":结果="";打破;案例' ' ' :结果=' ' ';打破;大小写"":结果="";打破;默认值:结果=ch} }返回结果;funShow函数(_ obj){ if(类型为(_ obj)=' object ')_ obj。风格。可见性=“inherit”;else $(_ obj。风格。可见性=“inherit”;funHide函数(_ obj){ if(类型为(_ obj)=' object ')_ obj。风格。可见性='隐藏';else $(_ obj。风格。可见性='隐藏';}函数Alert(str){ Alert(str);//窗口。status=str} /* 使用例子:函数processRequest(http_request,_val,_ loading _ img){ if(http _ request。回应。文档元素){//alert(DecoDeuriComponent(http _ request。回应。文档元素。XML));} else {//alert(DecoDeuriComponent(http _ request。response text));} alert(_ val);funHide(_ loading _ img);} 1、GET var AJax=new AJaxdo();Ajax。SetLoadIngimg(_ loading _ img);Ajax。setonreadystatechange(processRequest,_ val);阿贾克斯打开(' GET ',url,true);//异步模式,程序继续执行阿贾克斯。发送("");阿贾克斯Open('GET ',url,false);//非异步模式,程序等待阿贾克斯。发送("");var XML _ doc=Ajax。getresponsetext(' XML ');var TExT _ doc=Ajax。getresponsetext(' TExT ');2、POST var AJax=new AJaxDo();Ajax。SetLoadIngimg(_ loading _ img);Ajax。setonreadystatechange(processRequest,_ val);阿贾克斯打开(“开机自检”,网址,真);//异步模式,程序继续执行阿贾克斯。发送(数据);阿贾克斯Open('POST ',url,false);//非异步模式,程序等待阿贾克斯。发送(数据);var XML _ doc=Ajax。getresponsetext(' XML ');var TExT _ doc=Ajax。getresponsetext(' TExT ');注,客户端发送带有中文或超文本标记语言脚本的信息时,发送的信息必须调用:encodeURIComponent函数,例如:var data=encodeURIComponent($(' message ').值);实际是调用了两次,Ajax类内部又调用一次。服务端(Java版)需要做下转码:字符串消息=请求。getParameter(' message ');message=URLDecoder.decode(消息、“UTF-8”);*/注,客户端发送带有中文或超文本标记语言脚本的信息时,发送的信息必须调用:encodeURIComponent函数,例如:var data=encodeURIComponent($(' message ').值);实际是调用了两次,Ajax类内部又调用一次。

服务端(Java版)需要做下转码:字符串消息=请求。getParameter(' message ');message=URLDecoder.decode(消息、“UTF-8”);2、Demo.html复制代码代码如下:DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN ' ' http://www .w3。L1-过渡时期。DTD ' html xmlns=' http://www .w3。org/1999/XHTML ' head meta http-equiv=' Content-Type ' Content=' text/html;charset=gb2312'/titleAjax类/title脚本src=' http : AJax。js ' src=' http : AJax。js /脚本样式类型='text/css '!-#第1层{位置:绝对;left:670pxtop:11px宽度:15 px高度:15pxz指数:10000;背景色-: # FF0000;font-size :13border:none可见性:隐藏;} - /stylestyle type='text/css '伪造=' 1 ' #第1层{位置:绝对值;left:670pxtop:11px宽度:15 px高度:15pxz指数:10000;背景色-: # FF0000;font-size :13border:none可见性:隐藏;}/style/head body div id=' layer 1 ' img src=' http : indicator _ flower。gif ' src=' http : indicator _ flower。gif ' width=' 15 '/div脚本类型=' text/JavaScript '语言=' JavaScript '!-函数processRequest(http_request,_val,_ loading _ img){ alert(http _ request。回应。文档元素。XML);//alert(http _ request。response text);funHide(_ loading _ img);}////脚本脚本类型='text/javascript '语言='javascript '!-var URL=' http://www。w3schools。com/XML/simple。XML ';定义变量数据=' ';var AJax=new AJaxDo();函数btnajax 1(){//var AJax=new AJaxdo();//ajax .inithttp请求();Ajax。abort();Ajax。setloadinging mg(文档。getelementbyid('第1层');Ajax。setonreadystatechange(进程请求);阿贾克斯打开(' GET ',url,true);//异步模式,程序继续执行阿贾克斯。发送("");}函数btnajax 2(){//var AJax=new AJaxdo();//ajax .inithttp请求();Ajax。abort();阿贾克斯Open('GET ',url,false);//非异步模式,程序等待阿贾克斯。发送("");alert(Ajax。getresponsetext(' XML ')。文档元素。XML);alert(Ajax。getresponsetext(' TExT ');}////脚本按钮onclick=' btnajax 1()'异步模式/button button onclick='btnAjax2()'非异步模式/按钮/正文/html3,图片

更多资讯
游戏推荐
更多+