ajax,即"asynchronous javascript and xml"的缩写,可翻译为异步javascript及xml技术。其核心是一个寄宿在浏览器中名为xmlhttprequest的类。通过此类,可以做到无需提交表单就可以实现与服务器的连接;无需刷新整个页面,就可以动态更新页面中一部分的内容。xmlhttprequest通常使用xml作为数据交换的载体,但也可使用其他的载体,如纯文本。简单来说,就是通过xmlhttprequest发送信息给服务器,异步接收服务器处理并返回信息,然后通过javascript动态更新页面的部分内容。
尽管ajax近来非常火爆,但ajax并非新的技术,正如其名所示,只不过是javascript加上xml的技术罢了。而且使用上非常简单。
应用ajax的流程:
1、定义一个事件处理器
2、获取xmlhttprequest,并将事件处理器注册给它
3、与服务器连接
4、发送信息
5、服务器返回处理完毕的信息
6、每当xmlhttprequest的状态发生变化,自动触发事件处理器
7、事件处理器动态更新页面
本文通过一个简单的例子来说明如何在ie6中使用ajax技术。在这例子中,客户端每隔十秒,从服务器端取回一个随机的字符串,在不重新刷新页情况下,自动更新部分页面内容。例子仅用到了两个jsp文件,client.jsp及server.jsp。为了方便说明,我用server.jsp来代替本应作为servlet的server.java。
先看client.jsp内容:
<%@page contenttype="text/html"%>
<%@page pageencoding="gb2312"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en"
"http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>ajax demo</title>
<script language="javascript">
var xmlhttp;
function getgiftfromserver() {
var url = "http://localhost:8084/ajax/server.jsp";
if (window.activexobject) {
xmlhttp = new activexobject("microsoft.xmlhttp");
}
xmlhttp.onreadystatechange = showgift;
xmlhttp.open("get", url, true);
xmlhttp.send(null);
settimeout("getgiftfromserver()",10000);
}
function showgift() {
if (xmlhttp.readystate == 4 xmlhttp.readystate == "complete") {
document.getelementbyid("output").innerhtml = "time is for " + xmlhttp.responsetext + ".";
}
}
</script>
</head>
<body onload="getgiftfromserver()">
<h1>ajax例子</h1>
<div id="output"></div>
</body>
</html>
function showgift() {
if (xmlhttp.readystate == 4 xmlhttp.readystate == "complete") {
document.getelementbyid("output").innerhtml = "time is for " + xmlhttp.responsetext + ".";
}
} if (window.activexobject) {
xmlhttp = new activexobject("microsoft.xmlhttp");
}if (window.xmlhttprequest) {
xmlhttp = new xmlhttprequest
}
xmlhttp.onreadystatechange = showgift;
xmlhttp.open("get", url , true)
xmlhttp.open(bstrmethod, bstrurl, varasync, bstruser, bstrpassword)
xmlhttp.open("get","http://localhost/books.xml", false);
xmlhttp.send();
var book = xmlhttp.responsexml.selectsinglenode("//book[@id='bk101']");
xmlhttp.send(null)
xmlhttp.send( [varbody])
<%
string[] str = new string[] {"love", "power", "peace"};
int number = new java.util.random().nextint(2+1);
response.getwriter().write(str[number]);
%>
document.getelementbyid("output").innerhtml = "time is for " + xmlhttp.responsetext + ".";
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器