已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
最近互联网上比较火热的话题当然是关于WEB2.0的应用,其中AJAX又是WEB2.0的核心之一。AJAX是Asynchronous JavaScript and XML 的缩写。它并不是一门新的语言或技术,它实际上是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用,它包括使用XHTML和CSS标准化呈现;使用DOM实现动态显示和交互;使用XML和XSLT进行数据交换与处理;使用XMLHttpRequest进行异步数据读取;最后用JavaScript绑定和处理所有数据;Ajax的工作原理相当于在用户和服务器之间加了?个中间层,使用户操作与服务器响应异步化。这样把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。我们以两个验证通行证帐号是否存在的例子来讲述AJAX在实际中的应用:(1)用文本字符串的方式返回服务器的响应来验证网易通行证帐号是否存在;(2)以XMLDocument对象方式返回响应来验证金山通行证帐号是否存在;首先,我们需要用JavaScript来创建XMLHttpRequest 类向服务器发送一个HTTP请求, XMLHttpRequest 类首先由Internet Explorer以ActiveX对象引入,被称为XMLHTTP。 后来Mozilla?Netscape?Safari 和其他浏览器也提供了XMLHttpRequest类,不过它们创建XMLHttpRequest类的方法不同。对于Internet Explorer浏览器,创建XMLHttpRequest 方法如下:xmlhttp_request = new ActiveXObject(Msxml2.XMLHTTP.3.0); /3.0或4.0, 5.0xmlhttp_request = new ActiveXObject(Msxml2.XMLHTTP);xmlhttp_request = new ActiveXObject(Microsoft.XMLHTTP);由于在不同Internet Explorer浏览器中XMLHTTP版本可能不一致,为了更好的兼容不同版本的Internet Explorer浏览器,因此我们需要根据不同版本的Internet Explorer浏览器来创建XMLHttpRequest类,上面代码就是根据不同的Internet Explorer浏览器创建XMLHttpRequest类的方法。对于Mozilla?Netscape?Safari等浏览器,创建XMLHttpRequest 方法如下:xmlhttp_request = new XMLHttpRequest();如果服务器的响应没有XML mime-type header,某些Mozilla浏览器可能无法正常工作。 为了解决这个问题,如果服务器响应的header不是text/xml,可以调用其它方法修改该header。xmlhttp_request = new XMLHttpRequest();xmlhttp_request.overrideMimeType(text/xml);在实际应用中,为了兼容多种不同版本的浏览器,一般将创建XMLHttpRequest类的方法写成如下形式:tryif( window.ActiveXObject )for( var i = 5; i; i- )tryif( i = 2 )xmlhttp_request = new ActiveXObject( Microsoft.XMLHTTP );elsexmlhttp_request = new ActiveXObject( Msxml2.XMLHTTP. i .0 );xmlhttp_request.setRequestHeader(Content-Type,text/xml);xmlhttp_request.setRequestHeader(Content-Type,gb2312);break;catch(e)xmlhttp_request = false;else if( window.XMLHttpRequest )xmlhttp_request = new XMLHttpRequest();if (xmlhttp_request.overrideMimeType) xmlhttp_request.overrideMimeType(text/xml);catch(e)xmlhttp_request = false;在定义了如何处理响应后,就要发送请求了。可以调用HTTP请求类的open()和send()方法,如下所示:xmlhttp_request.open(GET, URL, true);xmlhttp_request.send(null);open()的第一个参数是HTTP请求方式?GET,POST或任何服务器所支持的您想调用的方式。 按照HTTP规范,该参数要大写;否则,某些浏览器(如Firefox)可能无法处理请求。第二个参数是请求页面的URL。第三个参数设置请求是否为异步模式。如果是TRUE,JavaScript函数将继续执行,而不等待服务器响应。这就是AJAX中的A。用JavaScript来创建XMLHttpRequest 类向服务器发送一个HTTP请求后,接下来要决定当收到服务器的响应后,需要做什么。这需要告诉HTTP请求对象用哪一个JavaScript函数处理这个响应。可以将对象的onreadystatechange属性设置为要使用的JavaScript的函数名,如下所示:xmlhttp_request.onreadystatechange =FunctionName;FunctionName是用JavaScript创建的函数名,注意不要写成FunctionName(),当然我们也可以直接将JavaScript代码创建在onreadystatechange之后,例如:xmlhttp_request.onreadystatechange = function()/ JavaScript代码段;在这个函数中。首先要检查请求的状态。只有当一个完整的服务器响应已经收到了,函数才可以处理该响应。XMLHttpRequest 提供了readyState属性来对服务器响应进行判断。readyState的取值如下:0 (未初始化)1 (正在装载)2 (装载完毕)3 (交互中)4 (完成)所以只有当readyState=4时,一个完整的服务器响应已经收到了,函数才可以处理该响应。具体代码如下:if (http_request.readyState = 4) / 收到完整的服务器响应 else / 没有收到完整的服务器响应当readyState=4时,一个完整的服务器响应已经收到了,接着,函数会检查HTTP服务器响应的状态值。完整的状态取值可参见W3C文档。当HTTP服务器响应的值为200时,表示状态正常。在检查完请求的状态值和响应的HTTP状态值后,就可以处理从服务器得到的数据了。有两种方式可以得到这些数据:(1)以文本字符串的方式返回服务器的响应(2)以XMLDocument对象方式返回响应实例一: 用文本字符串的方式返回服务器的响应来验证网易通行证帐号是否存在首先,我们登陆网易通行证注册页面,可以看到检测用户名是否存在是将用户名提交给checkssn.jsp页面进行判断,格式为:/register/checkssn.jsp?username=用户名根据上面讲到的方法,我们可以利用AJAX技术对网易通行证用户名进行检测:第一步:新建一个基于Xhtml标准的网页,在区域插入Javascript函数如下:function getXMLRequester( )var xmlhttp_request = false;tryif( window.ActiveXObject )for( var i = 5; i; i- )tryif( i = 2 )xmlhttp_request = new ActiveXObject( Microsoft.XMLHTTP );elsexmlhttp_request = new ActiveXObject( Msxml2.XMLHTTP. i .0 );xmlhttp_request.setRequestHeader(Content-Type,text/xml);xmlhttp_request.setRequestHeader(Content-Type,gb2312);break;catch(e)xmlhttp_request = false;else if( window.XMLHttpRequest )xmlhttp_request = new XMLHttpRequest();if (xmlhttp_request.overrideMimeType) xmlhttp_request.overrideMimeType(text/xml);catch(e)xmlhttp_request = false;return xmlhttp_request ;function IDRequest(n) /定义收到服务器的响应后需要执行的JavaScript函数url=n document.getElementById(163id).value;/定义网址参数xmlhttp_request=getXMLRequester();/调用创建XMLHttpRequest的函数xmlhttp_request.onreadystatechange = doContents;/调用doContents函数xmlhttp_request.open(GET, url, true);xmlhttp_request.send(null);function doContents() if (xmlhttp_request.readyState = 4) / 收到完整的服务器响应if (xmlhttp_request.status = 200) /HTTP服务器响应的值OKdocument.getElementById(message).innerHTML = xmlhttp_request.responseText;/将服务器返回的字符串写到页面中ID为message的区域 else alert(http_request.status);在区域建立一个文本框,id为163id再建一个id为messsge的空白区域用来显示返回字符串(也可以通过Javascript函数截取一部分字符串显示):这样,一个基于AJAX技术的用户名检测页面就做好了,不过这个页面将返回服务器响应生成页面的所有字符串,当然还可以对返回的字符串进行一些操作,便于应用到不同的需要当中。实例二: 以XMLDocument对象方式返回响应来验证金山通行证帐号是否存在在上面的例子中,当服务器对HTTP请求的响应被收到后,我们会调用请求对象的reponseText属性。该属性包含了服务器返回响应文件的内容。现在我们以XMLDocument对象方式返回响应,此时将不再需要reponseText属性而使用responseXML属性。首先登陆金山通行证注册页面,我们发现金山通行证用户名的检测方式为:/ksgweb/jsp/login/uid.jsp?uid=用户名,并且返回XML数据:isExistedUid-2当result值为-1时表示此用户名已被注册,当result值为-2时表示此用户名尚未注册,因此通过对result值的判断可以知道用户名是否被注册。对上例代码进行修改:首先找到document.getElementById(message).innerHTML = xmlhttp_request.responseText;改为:var response = xmlhttp_request.responseXML.documentElement;var result = response.getElementsByTagName(result)0.firstChild.data;/返回result节点数据if(result =-2)document.getElementById(message).innerHTML = 用户名 document.getElementById(163id).val
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年基本面分析师招聘面试题库及参考答案
- 2025年护理管理研究员招聘面试题库及参考答案
- 2025年操作研究分析师招聘面试题库及参考答案
- 2025年军事专家招聘面试题库及参考答案
- 2025年非营利机构经理招聘面试题库及参考答案
- 2025年现场施工专员招聘面试题库及参考答案
- 2025年公关活动专员招聘面试参考题库及答案
- 2025年医疗健康经理招聘面试题库及参考答案
- 2025年企业资源计划专员招聘面试参考题库及答案
- 2025年流程优化顾问招聘面试参考题库及答案
- 唐代诗人李白生平简介及诗词鉴赏课件教学模板
- 煤层气开发煤层气开采工程
- 供应链金融业务管理办法(邮政储蓄)
- 爬电距离与电气间隙
- 火车过桥问题新版课件
- 《锂电池用辅助材料 第1部分 金属极耳》团体标准征求意见稿
- YS/T 886-2013纯钛型材
- 简单的轮胎供货合同范本
- DB34T3587-2020 《城镇排水管道检测与修复技术规程》
- KQ型智能控制器使用说明
- 16米空心板梁汽车吊吊装施工方案
评论
0/150
提交评论