小新 的 BLOG
            
            -=java、Web编程=-

AJAX入门


       目前基于Java比较火的ajax开源项目有dwr(很久很久以前就有人用在实际的项目中了),ajaxtag(能跟struts非常好的结合)
,zk(目前最新版本2.1,对显示页面的从新封装,熟悉一些RIA技术的人会发现很相似。zk跟flex等ria开发是完全不一样的原理)..... 太多了。

AJAX入门的两个代码server.jsp,client.jsp(最近翻了下以前的项目源码,感觉不错)
client.jsp每过5000时间就从server.jsp获取内容并显示在页面上。这两段是最笨最简单的ajax原理的实现,直接把服务端的内容提取出来显示在页面。稍微复杂点的是客户端访问服务端,并返回xml树,并在客户端以dom形式解析,并选择性的进行处理。

server.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" autoFlush="true" buffer="0kb" %>
<%
response.getWriter().write((new java.util.Date()).toString());
%>

client.jsp

<%@ page language="java" contentType="text/html; charset=GB2312"
pageEncoding="GB2312"%>
<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:8080/ajax/ajax/server.jsp";               
if (window.ActiveXObject) {                    
  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");               
}else if(window.ActiveHttpRequest){
  xmlHttp = new XMLHttpRequest();
  xmlHttp.overrideMimeType('text/xml');
}
/**注册事件处理器
  * showGift为传入的方法名,每当XMLHTTPRequest的状态发生改变时,将执行此方   
  */
xmlHttp.onreadystatechange = showGift;               
/**
  * xmlHttp.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword)
    bstrMethod: 连接方式,可用的有GET, POST, PUT, or PROPFIND
    bstrUrl: 服务器的url
    varAsync(可选): 调用是否异步,默认为true(调用立即返回)
    bstrUser(可选):用户名,如果url需要验证时附上
    bstrPassword(可选):密码,如果url需要验证时附上   
    ---------------------------------
    open()方法可以直接打开一个xml文档,并通过xmlHttp的responseXML来读取相应的节点
    xmlHttp.open("GET","http://localhost/books.xml", false);      
    xmlHttp.send();      
    var book = xmlhttp.responseXML.selectSingleNode("//book[@id='bk101']");
  */  
xmlHttp.open("POST", url, true);   
/**发送信息
  * 其方法签名如下 xmlHttp.send( [varBody])
  * varBody(可选): 可为字符串或xml等数据,可以为null。无返回值
  * 此方法在open()设为异步时,立即返回;在open()设为同步时,必须等到reponse对象从服务器中返回时才返回。
  
  
  * 代码  xmlHttp.send(null);  不能发送  null  ,必须发送一个内容,如一个字符串或对象(我直接给null加上了个双引号),这样才能让server.jsp响应并更新页面。
  */            
xmlHttp.send(null);                          
window.setTimeout("getGiftFromServer()",5000);            
}   
function showGift() {      
/**
*  0:对象已创建,但zhengzai初始化(未调用open()方法)
    1:对象已创建,但未调用send()方法
    2:已调用send()方法,但status及headers还未可用
    3:已经传回部分数据,但status及headers还未完全可用
    4:已经收到所有数据,可使用所有数据
*/         
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {   
  document.getElementById("title").innerHTML = "页面正常,数据传输结束";                 
  document.getElementById("output").innerHTML += "client:" + new Date()+"-- Time is for --server :" + xmlHttp.responseText + ".<br>";
}else{
  //if(xmlHttp.status == 200){
   document.getElementById("title").innerHTML = "页面正常,正在处理数据";
  /*}else{
   document.getElementById("title").innerHTML = "页面错误!";
  }*/
}
}        
</script>
</head>
<body onload="getGiftFromServer()">
<h1>AJAX例子</h1>
<div id="title"></div>
<div id="output"></div>
</body>
</html>

标签集:TAGS:
回复Comments()点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}
  用户登录
用户名
密 码
选 项:
 
  我的日历
  分类日志
  访问计数
  获取 RSS
bluelover 最新的 20 条日志
  最新评论
  友情链接
  联系我
                  GMail:bluelover@gmail.com
MSN:xini_huang@hotmail.com
QQ:85364603
Modified by blueloverPowered by 5DBlog.com