简简单单实现Ajax
来源:互联网 发布:手机进销存软件免费 编辑:程序博客网 时间:2024/04/30 07:09
很多时候需要做一点例如注册用户名验证、动态加载列表框之类的东西, 其实很简单, 后台一个servlet, 前台简单javascript脚本就能实现。
下面给出一个动态加载列表框的实例代码, 以供参考:
先来看看后台servlet:
package com.cenglou.dca.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import com.cenglou.dca.report.DcWeekVO;
import com.cenglou.dca.report.GetWeekStringDAO;
/** *//**
* 得到周与日期段的对应关系
*
*/
public class GetReportDateStringServlet extends BaseServlet ...{
private static final Logger logger = Logger
.getLogger(GetReportDateStringServlet.class);
public void execute(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException ...{
String Year=request.getParameter("year");
PrintWriter out=response.getWriter();
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
GetWeekStringDAO dao=new GetWeekStringDAO();
List list=dao.getWeekStringList(Year);
Iterator it=list.iterator();
out.println("<response>");
while(it.hasNext())...{
DcWeekVO vo=(DcWeekVO)it.next();
out.println("<key>");
out.println("<yearWeek>" + vo.getYearWeek() +"</yearWeek>");
out.println("<dateString>" + vo.getDateStrig() + "</dateString>");
out.println("</key>");
}
out.println("</response>");
out.close();
}
}
页面:
<!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=ISO-8859-1">
<title>Ajax示例</title>
<script type="text/javascript">...
function createXMLHttpRequest()...{
if(window.ActiveXObject)...{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)...{
xmlHttp = new XMLHttpRequest();
}
}
function GetDateStringRequest()...{
createXMLHttpRequest();
var year = document.getElementById("Year").value;
var postString="year=" + year;
var url = "<%=request.getContextPath()%>/GetReportDateStringServlet?timeStamp=" + new Date().getTime();
xmlHttp.open("POST",url,true);
xmlHttp.onreadystatechange = callDateStringback;
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
xmlHttp.send(postString);
}
function callDateStringback()...{
if(xmlHttp.readyState==4)...{
if(xmlHttp.status==200)...{
var keys=xmlHttp.responseXML.getElementsByTagName("key");
var oldyearWeek=document.getElementById("yearWeek");
while(oldyearWeek.childNodes.length>1)...{
oldyearWeek.removeChild(oldyearWeek.childNodes[1]);
}
for(i=0;i<keys.length;i++)...{
var yearWeek=keys[i].firstChild.firstChild.data;
var dateString=keys[i].lastChild.firstChild.data;
setDateStringMessage(yearWeek,dateString);
}
}
}
}
function setDateStringMessage(yearWeek,dateString)...{
var yearWeekNode=document.getElementById("yearWeek");
var newoption=document.createElement("option");
newoption.value=yearWeek;
newoption.appendChild(document.createTextNode(dateString));
yearWeekNode.appendChild(newoption);
}
</script>
</head>
<body onload="GetDateStringRequest();">
<table>
<tr>
<td>年:<select name="Year" onchange="GetDateStringRequest();">
<%...for(int i=cd.get(1);i>=2006;i--){%>
<option value="<%=i%>" <%=Integer.valueOf(Year).intValue()==i?"selected":" " %>><%=i%></option>
<%}%>
</select>周:<select id="yearWeek" name="yearWeek">
<option>--请选择日期段--</option>
</select><input type="hidden" name="id" value="<%=reportId%>"><input type="submit" value="查询"></td>
</tr>
</table>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Ajax示例</title>
<script type="text/javascript">...
function createXMLHttpRequest()...{
if(window.ActiveXObject)...{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)...{
xmlHttp = new XMLHttpRequest();
}
}
function GetDateStringRequest()...{
createXMLHttpRequest();
var year = document.getElementById("Year").value;
var postString="year=" + year;
var url = "<%=request.getContextPath()%>/GetReportDateStringServlet?timeStamp=" + new Date().getTime();
xmlHttp.open("POST",url,true);
xmlHttp.onreadystatechange = callDateStringback;
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
xmlHttp.send(postString);
}
function callDateStringback()...{
if(xmlHttp.readyState==4)...{
if(xmlHttp.status==200)...{
var keys=xmlHttp.responseXML.getElementsByTagName("key");
var oldyearWeek=document.getElementById("yearWeek");
while(oldyearWeek.childNodes.length>1)...{
oldyearWeek.removeChild(oldyearWeek.childNodes[1]);
}
for(i=0;i<keys.length;i++)...{
var yearWeek=keys[i].firstChild.firstChild.data;
var dateString=keys[i].lastChild.firstChild.data;
setDateStringMessage(yearWeek,dateString);
}
}
}
}
function setDateStringMessage(yearWeek,dateString)...{
var yearWeekNode=document.getElementById("yearWeek");
var newoption=document.createElement("option");
newoption.value=yearWeek;
newoption.appendChild(document.createTextNode(dateString));
yearWeekNode.appendChild(newoption);
}
</script>
</head>
<body onload="GetDateStringRequest();">
<table>
<tr>
<td>年:<select name="Year" onchange="GetDateStringRequest();">
<%...for(int i=cd.get(1);i>=2006;i--){%>
<option value="<%=i%>" <%=Integer.valueOf(Year).intValue()==i?"selected":" " %>><%=i%></option>
<%}%>
</select>周:<select id="yearWeek" name="yearWeek">
<option>--请选择日期段--</option>
</select><input type="hidden" name="id" value="<%=reportId%>"><input type="submit" value="查询"></td>
</tr>
</table>
</body>
</html>
多的不想说了, 自己看代码吧! 代码参考《Ajax基础教程》, 有兴趣的可以找书看看。
- 简简单单实现Ajax
- 简简单单实现验证码
- 简简单单
- 简简单单
- 简简单单
- 简简单单
- 简简单单
- 简简单单
- 用属性动画简简单单实现android导航栏特效
- 简简单单long
- 简简单单,从零开始!
- 简简单单,随遇而安
- 7.1 简简单单
- AJAX-jQuery实现Ajax
- Ajax 实现
- ajax实现
- Ajax 实现
- ajax实现
- 猪的故事
- .NET开发人员犯的6大安全错误
- 转:邹建--实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
- 关注汇编
- 不要过分设计
- 简简单单实现Ajax
- struts2标签学习笔记一
- 论国内开发人员的习惯
- js 中的日期操作
- c/c++时间详解
- Java的多线程同步机制的主要原则
- struts2标签学习笔记二
- Blogs
- Google将改变搜索结果策略 每个域名只显示两结果