由于ajax为我们带来太多的好处,所以在很多应用中我们都会优先选择这种技术,于是我也为之所吸引,现跟大家分享下一个简单的入门例子。
dk 0} q6~ regist.jsp文件:一个简单的注册页面
SF da?> 注册页面
v4XEp
ClNuO QZuKM 'D+ \m=k~Cf:f 用户名:
U/_hH*N"! N*)O_Ki `Q[NrOqe" +zEyCx=8H 一级密码:
hS&.-5v (O&HCT| yR"mRy1 js文件源代码如下:(ajax.js)
lNTbd"}$: - //定义XMLHttpRequest对象实例
- var http_request = false;
- //定义可复用的http请求发送函数
- function send_request(method,url,content,responseType,callback) {//初始化、指定处理函数、发送请求的函数
- http_request = false;
- //开始初始化XMLHttpRequest对象
- if(window.XMLHttpRequest) { //Mozilla 浏览器
- http_request = new XMLHttpRequest();
- if (http_request.overrideMimeType) {//设置MiME类别
- http_request.overrideMimeType("text/xml");
- }
- }
- else if (window.ActiveXObject) { // IE浏览器
- try {
- http_request = new ActiveXObject("Msxml2.XMLHTTP");
- } catch (e) {
- try {
- http_request = new ActiveXObject("Microsoft.XMLHTTP");
- } catch (e) {}
- }
- }
- if (!http_request) { // 异常,创建对象实例失败
- window.alert("不能创建XMLHttpRequest对象实例.");
- return false;
- }
- if(responseType.toLowerCase()=="text") {
- //http_request.onreadystatechange = processTextResponse;
- http_request.onreadystatechange = callback;
- }
- else if(responseType.toLowerCase()=="xml") {
- //http_request.onreadystatechange = processXMLResponse;
- http_request.onreadystatechange = callback;
- }
- else {
- window.alert("响应类别参数错误。");
- return false;
- }
- // 确定发送请求的方式和URL以及是否异步执行下段代码
- if(method.toLowerCase()=="get") {
- http_request.open(method, url, true);
- }
- else if(method.toLowerCase()=="post") {
- http_request.open(method, url, true);
- http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
- }
- else {
- window.alert("http请求类别参数错误。");
- return false;
- }
- http_request.send(content);
- }
- // 处理返回文本格式信息的函数
- function processTextResponse() {
- if (http_request.readyState == 4) { // 判断对象状态
- if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
- //alert(http_request.responseText);
- alert("Text文档响应。");
- } else { //页面不正常
- alert("您所请求的页面有异常。");
- }
- }
- }
- //处理返回的XML格式文档的函数
- function processXMLResponse() {
- if (http_request.readyState == 4) { // 判断对象状态
- if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
- //alert(http_request.responseXML);
- alert("XML文档响应。");
- } else { //页面不正常
- alert("您所请求的页面有异常。");
- }
- }
- }
B&<P >AZ checkUsername.jsp源代码如下:
i1*0'x - <%@ page contentType="text/html; charset=gb2312"
- %>
- <%@ page import="com.kemei.user.util.MemberManager" %>
- <%
- String name=request.getParameter("username");
- MemberManager manager=new MemberManager();
- if(manager.searchByUsername(username))
- out.println("用户名称["+username+"]已经被注册,请更换其他用户名称再注册。");
- else out.println("用户名称["+username+"]尚未被注册,您可以继续。");
- manager.closeDAO();
- %>
$)d34JM 到此,一个简单的异步验证用户名的程序已经完成,当你输入完用户名后,切换光标,将会异步验证数据的正确性,但是,在使用时还遇到点不问题,最初输入英文或数字验证用户名时,没问题,但我输入中文难时却出现乱码,于是对checkUsername.jsp进行了修改,修改后源程序如下:
Mh{>#Gs - <%@ page contentType="text/html; charset=gb2312"
- %>
- <%@ page import="com.kemei.user.util.MemberManager" %>
- <%
- String name=request.getParameter("username");
- String username=new String(name.getBytes("ISO8859-1"),"gb2312");
- MemberManager manager=new MemberManager();
- if(manager.searchByUsername(username))
- out.println("用户名称["+username+"]已经被注册,请更换其他用户名称再注册。");
- else out.println("用户名称["+username+"]尚未被注册,您可以继续。");
- manager.closeDAO();
- %>
&=XK:+ 修改后,重新输入中文测试,没出现乱码,到此一个简单的ajax应用就结束了。