浦口区网站建设质量推荐,深圳小程序网站开发,网站建设情况的报告,服装网站建设的需求最近互联网上比较火热的话题当然是关于WEB2.0的应用#xff0c;其中AJAX又是WEB2.0的核心之一。AJAX是Asynchronous JavaScript and XML 的缩写。它并不是一门新的语言或技术#xff0c;它实际上是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用#xff0c;它包…最近互联网上比较火热的话题当然是关于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.0 xmlhttp_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类的方法写成如下形式 try{ if( window.ActiveXObject ){ for( var i 5; i; i-- ){ try{ if( i 2 ){ xmlhttp_request new ActiveXObject( Microsoft.XMLHTTP ); }else{ xmlhttp_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请求方式—GETPOST或任何服务器所支持的您想调用的方式。 按照HTTP规范该参数要大写否则某些浏览器(如Firefox)可能无法处理请求。 第二个参数是请求页面的URL。 第三个参数设置请求是否为异步模式。如果是TRUEJavaScript函数将继续执行而不等待服务器响应。这就是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 (完成) 所以只有当readyState4时一个完整的服务器响应已经收到了函数才可以处理该响应。具体代码如下 if (http_request.readyState 4) { // 收到完整的服务器响应 } else { // 没有收到完整的服务器响应 } 当readyState4时一个完整的服务器响应已经收到了接着函数会检查HTTP服务器响应的状态值。完整的状态取值可参见W3C文档。当HTTP服务器响应的值为200时表示状态正常。 在检查完请求的状态值和响应的HTTP状态值后就可以处理从服务器得到的数据了。有两种方式可以得到这些数据 (1) 以文本字符串的方式返回服务器的响应 (2) 以XMLDocument对象方式返回响应 实例一 用文本字符串的方式返回服务器的响应来验证网易通行证帐号是否存在 首先我们登陆网易通行证注册页面可以看到检测用户名是否存在是将用户名提交给checkssn.jsp页面进行判断格式为 reg.163.com/register/checkssn.jsp?username用户名 根据上面讲到的方法我们可以利用AJAX技术对网易通行证用户名进行检测 第一步新建一个基于Xhtml标准的网页在head区域插入Javascript函数如下 script typetext/javascript languagejavascript function getXMLRequester( ){ var xmlhttp_request false; try{ if( window.ActiveXObject ){ for( var i 5; i; i-- ){ try{ if( i 2 ){ xmlhttp_request new ActiveXObject( Microsoft.XMLHTTP ); }else{ xmlhttp_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函数 urlndocument.getElementById(163id).value;//定义网址参数 xmlhttp_requestgetXMLRequester();//调用创建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服务器响应的值OK document.getElementById(message).innerHTML xmlhttp_request.responseText; //将服务器返回的字符串写到页面中ID为message的区域 } else { alert(http_request.status); } } } /script 在body区域建立一个文本框id为163id input typetext id163id onpropertychangeIDRequest(http://reg.163.com/register/checkssn.jsp?username) / 再建一个id为messsge的空白区域用来显示返回字符串(也可以通过Javascript函数截取一部分字符串显示) div idmessage/div 这样一个基于AJAX技术的用户名检测页面就做好了不过这个页面将返回服务器响应生成页面的所有字符串当然还可以对返回的字符串进行一些操作便于应用到不同的需要当中。 实例二 以XMLDocument对象方式返回响应来验证金山通行证帐号是否存在 在上面的例子中当服务器对HTTP请求的响应被收到后我们会调用请求对象的reponseText属性。该属性包含了服务器返回响应文件的内容。现在我们以XMLDocument对象方式返回响应此时将不再需要reponseText属性而使用responseXML属性。 首先登陆金山通行证注册页面我们发现金山通行证用户名的检测方式为 pass.kingsoft.com/ksgweb/jsp/login/uid.jsp?uid用户名,并且返回XML数据: ?xml version1.0 encodingUTF-8 standaloneyes ? response methodisExistedUid/method result-2/result /response 当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).value尚未注册; } else if(result -1){ document.getElementById(message).innerHTML 对不起,用户名document.getElementById(163id).value已经注册; } 通过以上两个实例说明了AJAX的客户端基础应用采用的是网易和金山现成的服务器端程序当然为了开发合适自己页面的程序还需要对自己编写服务器端程序这设计到程序语言及数据库的操作对于有一定程序基础的读者一定不是很难的事情本文着重讨论了客户端AJAX的应用体验广大读者可以根据本文讲的原理结合各种样式表现手法作出绚丽多彩的应用希望本文能够起到抛砖引玉的作用。转载于:https://www.cnblogs.com/alon/archive/2009/04/17/1438273.html