最近研究了一下Ajax,越看越有趣。Ajax其实就是JavaScript+DOM+CSS+XMLHttpRequest的结合体。前三个实现了 DHTML(动态HTML),再加上XMLHttpRequest后,就成了Ajax。说Ajax 改变了用户的浏览体验,我觉得其实就是Ajax让用户能够在网页上执行连续不间断的操作,就和使用CS程序一样。之所以能够连续不断操作,是因为Ajax是异步的,用Ajax与后台通信,不会打断用户的操作(比如刷新界面等)。真的很不错。昨天从CSDN上看到一个用Ajax技术实现的网络操作系统Ajax13,进去试了一把,爽!
下面是我刚学习Ajax做的一个程序:登录验证
用户输入用户名和密码后到服务器验证,之后返回结果,如果验证失败,就弹出对话框提示,否则就跳转到其他页面。
1.页面
< form name ="myform" action ="login.do" method ="post" onSubmit ="return check()" >
Name: < input type =text id ="usr" name ="usr" >< br >
Password: < input type =password id ="pwd" name ="pwd" >< br >
< input type =submit />
</ form >
2.JavaScript
< script type = " text/javascript " >
var xmlRequest = null ;
var READY_STATE_UNLOAD = 0 ;
var READY_STATE_LOADING = 1 ;
var READY_STATE_LOADED = 2 ;
var READY_STATE_INTERACTIVE = 3 ;
var READY_STATE_COMPLATE = 4 ;
// 获取XMLHttpRequest对象
function getXMLHttpRequest() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else {
return new ActiveXObject( " Microsoft.XMLHTTP " );
}
}
function check() {
// 获得用户输入的用户名和密码
var params = " usr= " + document.getElementById( " usr " ).value + " &pwd= " + document.getElementById( " pwd " ).value;
sendRequest( " login " , params, " get " );
return false ;
}
// 发送请求
function sendRequest(url, params, method) {
if ( ! method) {
method = " post " ;
}
//获得XMLHttpRequest对象
xmlRequest = getXMLHttpRequest();
if (xmlRequest) {
// 设置回调函数
xmlRequest.onreadystatechange = callBack;
// 打开连接
xmlRequest.open(method, url, true );
xmlRequest.setRequestHeader( " Content-Type " , " application/x-www-form-urlencoded " );
// 设置参数
xmlRequest.send(params);
}
}
// 回调函数
function callBack() {
var ready = xmlRequest.readyState;
var data = null ;
if (ready == READY_STATE_COMPLATE) {
data = xmlRequest.responseXML;
// 获得返回结果
var flag = data.getElementsByTagName( " flag " )[ 0 ].firstChild.nodeValue;
if (flag == " false " ) {
alert( ' 用户名或密码错误!请重新输入! ' );
} else {
// 打开新窗口
window.open( " ok " , " _top " );
}
}
}
</ script >
xmlRequest = getXMLHttpRequest();
if (xmlRequest) {
// 设置回调函数
xmlRequest.onreadystatechange = callBack;
// 打开连接
xmlRequest.open(method, url, true );
xmlRequest.setRequestHeader( " Content-Type " , " application/x-www-form-urlencoded " );
// 设置参数
xmlRequest.send(params);
}
}
// 回调函数
function callBack() {
var ready = xmlRequest.readyState;
var data = null ;
if (ready == READY_STATE_COMPLATE) {
data = xmlRequest.responseXML;
// 获得返回结果
var flag = data.getElementsByTagName( " flag " )[ 0 ].firstChild.nodeValue;
if (flag == " false " ) {
alert( ' 用户名或密码错误!请重新输入! ' );
} else {
// 打开新窗口
window.open( " ok " , " _top " );
}
}
}
</ script >
执行的过程是这样的:
Step1:获得XMLHttpRequest对象
Step2:设置请求URL,参数,回调函数
Step3:将请求发送给服务器
Step4:服务器返回结果,回调函数用来处理返回结果
下面是执行的结果:
本文介绍Ajax技术的基础知识及其如何改变用户的浏览体验。通过一个具体的登录验证示例,展示了如何利用Ajax实现前后端异步通信,使得用户能在不刷新页面的情况下接收反馈。

2508

被折叠的 条评论
为什么被折叠?



