一,AJAX的概念
AJAX是一种局部界面更新方式。简单的说,在B/S格式上给用户C/S的界面观感。AJAX的英文全称是Asynchronous JavaScript and XML,(异步JavaScript和XML技术)。这里稍微解释下: 异步是指浏览器向服务器发送请求是异步的,请求发送出去后,不必等得响应便可发送下一条请求(有些多线程的意思), JS是AJAX的编程语言,异步JS是强调AJAX发送请求的方式。 XML的是指可扩展的标记语言(Extensible Markup Language),AJAX的响应返回都是XML格式的标记语言,方便在网页中操作。
这里介绍下AJAX和普通Web在刷新页面上的区别,先说普通Web,Web向服务器发送一个请求,服务器接收并处理该请求,然后响应到一个新的网页。这是一个完整的请求—响应过程。如果前后两个页面的差别不大,Web中的过程就会浪费许多宽带。网页上只需一点点变动,都要刷新整个网页,这是没有必要的。与此不同,AJAX在这方面就优化了很多,AJAX只需向服务器发送并取回必要的任务,使用XML的Web Service接口,并在客户端用JS处理响应,客户端和服务器端的数据交换大大减少,也加快了响应速度。
二,AJAX的使用方法
首先,创建XMLHttpRequest对象,XMLHttpRequest对象是AJAX的核心API,
XMLHttpRequest是浏览器内置的对象,用来发送异步请求和接收响应。
如IE的是ActiveXObject对象,火狐的是XMLHttpRequest对象,没有配置该对象的浏览器就不可以使用AJAX。
代码示例:
function getRequestObject(){
if(window.ActiveXObject){//IE浏览器
request = new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){//火狐浏览器
request = new XMLHttpRequest();
}else {
alert("您电脑的浏览器不支持AJAX");
}
}
然后,用XMLHttpRequest对象向服务器发送请求,这个步骤中,必须绑定回调方法。 这里解释下回调方法:在AJAX机制中,发送请求,服务器接收并作出响应后,响应会自动回调到客户端。 绑定回调方法是AJAX与普通Web最大的区别所在。回调机制类似监听机制,一旦服务器做出响应,回调方法就会自动捕获该响应,并按方法进行处理。
代码示例:
function sendRequest(){//向服务器发送请求
getRequestObject();//取得XMLHttpRequest对象
//绑定回调方法(特别重要 调用回调方法不用括号)
request.onreadystatechange = processResult;
//发送请求,还可以用get方式发送
request.open("post",url,true);
//post必须添加的信息头处理
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
request.send("Count="+Count); //发送请求中的参数
}
function processResult(){//回调方法,响应发出时自动调用该方法
if(request.readystate==4){//服务器处理完毕
if(request.status==200){//将状态做为数字返回 200为OK
//取得服务器传送的响应内容,并操作Dom组建局部更新页面
document.getElementById("msgDisplay").inner =request.responseText;
}
}
}
再接上服务器Servlet的代码,用在发送请求后,响应回调前:
public void service(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
//设置响应输出的格式,此处是HTML格式的 (HTML是XML的一种)
response.setContentType("text/html;charset=gbk");
//处理缓存
response.setHeader("Cache-Control", "no-cache");
//取得客户端发送过来的参数
int count = Integer.parseInt(request.getParameter("Count"));
PrintWriter out = response.getWriter();
//发送相应给客户端 之后交由回调接方法收并处理
out.println("客户第"+count+"次发送消息,系统时间是:"+System.currentTimeMillis());
out.flush();
out.close();
}
此处只是简单介绍了AJAX在JS中的编写方法,没有详细写入HTML中网页设计。但这些JS中的方法是AJAX最根本的东西,理解本质之后才能够在网页界面和服务器的数据交换以及请求—响应的操作中熟练运用。希望这篇文章能让大家对AJAX有进一步的了解。