日期:2014-05-16  浏览次数:20905 次

Ajax介绍(用户注册验证)
Ajax,检查用户名是否存在
          

Ajax作用:
Asynchronous JavaScript and XML(异步JavaScript和XML)
异步的主要是刷新一个层

Ajax里的onreadystatechange是做什么用的

发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态,XMLHttpRequest对象提供了onreadyStateChange事件实现这一功能。这类似于回调函数的做法。 onreadyStateChange事件可指定一个事件处理函数来处理XMLHttpRequest对象的执行结果,

onreadyStateChange事件是在readyState属性发生改变时触发的,readyState的值表示了当前请求的状态,在事件处理程 序中可以根据这个值来进行不同的处理。 readyState有五种可取值0:尚未初始化,1:正在加载,2:加载完毕,3:正在处理;4:处理完毕。一旦readyState属性的值变成了 4,就可以从服务器返回的响应数据进行访问了。 通常在事件中判断readyState的值是在请求完毕时才做处理,

Http状态码 含义 200 请求成功 202 请求被接受但处理未完成 400 错误请求 404 请求资源未找到 500 内部服务器错误




source code:

1.addTeam.jsp 
<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="gbk"%>
<%
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/";
%>
<%@ taglib prefix ="s" uri="/struts-tags"%> 
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>增加小组</title>
<link rel="stylesheet" type="text/css" href="./css/team.css" />
<script type="text/javascript" src="./js/trim.js"></script>
<script type="text/javascript">
var xmlHttp;

function createXMLHttpRequest() {
	if(window.ActiveXObject) {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	}
}

function startRequest() {
	//创建请求对象
	createXMLHttpRequest();
	//为事件readystatechange绑定函数handleStateChange
	xmlHttp.onreadystatechange = handleStateChange;
	//打开访问的地址
	xmlHttp.open("Post","team/TeamNameCheck",true);
	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	//发送请求
	xmlHttp.send("team.name=" + teamForm.elements["team.name"].value);
}

function handleStateChange() {
	if(xmlHttp.readyState == 4) {
		if(xmlHttp.status == 200) {
			document.getElementById("namecheck").innerHTML = xmlHttp.responseText;
		}
	}
}



function checkTeam() {
	if(trim(teamForm.elements["team.name"].value) == "") {
		alert("请填写组名!");
		return false;
	}
	if(trim(teamForm.elements["team.leader"].value) == "") {
		alert("请填写组长!");
		return false;
	}
	if(trim(teamForm.elements["team.slogan"].value) == "") {
		alert("请填写口号!");
		return false;
	}
	
	return true;
}
</script>
</head>
<body>
<div id="top">
<h1>增加小组</h1>
</div>

<div id="content">
<form name="teamForm" action="team/AddTeam" method="post" onsubmit="return checkTeam();">
<p>组名:<input type="text" name="team.name" onblur="startRequest()"><span id="namecheck"></span>
<p>组长:<input type="text" name="team.leader">
<p>口号:<input type="text" name="team.slogan">
<p><input type="submit" value="确定">
<input type="reset" value="重填">
</form>
<p><s:fielderror></s:fielderror></p>
<p><a href="./team/index.jsp">返回小组管理</a>
</div>

</body>
</html>






2.struts.xml文件里面配置解决中文乱码:
<constant name="struts.i18n.encoding" value="UTF-8"></constant>

假如是“UTF-8”以外的其他编码如gbk,都会在action里面接收的name都是乱码,因为var xmlHttp;对象默认提交的编码就是utf-8