第一步,编写HTML页面代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<script type="text/javascript" src="jslib/verifyxml.js"></script>
</head>
<body>
<!--基于标准的习惯,标签要小写,标签要关闭,属性要小写,属性要值用双引号引起来-->
username:<br/>
<input type="text" id="userName" onblur="verify();"><br/>
<!--ajax方式不需要name属性,需要一个ID属性-->
<div id="result"></div>
<!--div和span,div独占一行,而span与其上下内容紧紧相连-->
</body>
</html>
第二步,编写实现AJAX的JS代码
//使用XMLHTTPRequest对象来完成ajax
var xmlhttp;
function verify(){
//alert("hello racky");
//1取得文本框的值
var userName=document.getElementById("userName").value;
//2创建 XMLHTTPRequest对象
if(window.XMLHttpRequest){
//firefox,Mozillar,opera,safari,ie7,ie8
xmlhttp=new XMLHttpRequest();
//针对某些特定版本的Mozillar浏览器的BUG进行的修正
if(xmlhttp.overrideMimeType){
xmlhttp.overrideMimeType("text/xml");
}
} else if(window.ActiveXObject){
//ie6,ie5.5,ie5
//两个可用于创建XMLHTTPRequest对象的控件名称,保存在一个JS数组中,排在前面的较新
var activexName=['MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
for(var i=0;i<activexName.length;i++){
try{
//创建成功则终止循环,创建失败则抛出异常,继续循环,尝试创建
xmlhttp=new ActiveXObject(activexName[i]);
break;
}catch(e){
}
}
}
if(!xmlhttp){
alert("Object XMlHttpRequest created failed");
return;
}else{
//alert(xmlhttp);
//alert("after create:"+xmlhttp.readyState)
}
//3注册回调函数
//注册回调函数时,函数名后面不能加括号
//将函数名注册,如果加上括号,会将函数的返回值注册上
xmlhttp.onreadystatechange=callback;
//4设置连接信息
//设置与服务器的连接信息,HTTP的请求方式,URL,采用异步还是同步,TRUE是异步
//xmlhttp.open('GET','ajaxserver?name='+userName,true);
//POST方式请求的代码 ,URL中不能带参数
xmlhttp.open('POST','AJAXXMLServer',true);
//设置POST请求头
xmlhttp.setRequestHeader('Content-Type',"application/x-www-form-urlencoded");
//POST方式发送数据
xmlhttp.send("name="+userName);
//alert("after open:"+xmlhttp.readyState);
//5发送数据,开始和服务器交互
//同步方式下,send要等到服务器端数据返回后才执行,异步方式会立即完成执行
//xmlhttp.send(null);
//alert("after send:"+xmlhttp.readyState);
}
//回调函数 readyState一改变,回调函数就会调用
function callback(){
//alert("load callback:"+xmlhttp.readyState);
//判断对象的交互状态是完成
if(xmlhttp.readyState==4){
//判断http的交互是否成功
if(xmlhttp.status==200){
//获取服务器端返回的数据
//使用responseText的方式来接受XML数据对象的DOM对象
//alert("hello racky");
var domObj=xmlhttp.responseXML;
if(domObj){
//alert(domObj);
//<message></message>
//根据getElementsByTagName获取元素节点,可能找到多个,返回的是数组
var msgNodes=domObj.getElementsByTagName("message");
//判断是否正确取得节点
if(msgNodes.length>0){
//获取msgNode的文本内容
var responseMsg=msgNodes[0].firstChild.nodeValue;
//将数据显示在页面上
var divNode=document.getElementById('result');
divNode.innerHTML=responseMsg;
//获取服务器端输出的纯文本数据
//var responseText=xmlhttp.responseText;
//将数据显示在页面上
//var divNode=document.getElementById('result');
//divNode.innerHTML=responseText;
}else{
alert("data xml error,the xml content:"+xmlhttp.responseText);
}
}else{
alert("data xml error,the xml content:"+xmlhttp.responseText);
}
}
}
}
第三步,编写服务端JAVA代码,这里仅仅是为了实现AJAX,因此服务端代码比较简单
package com.racky.servlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;
/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2009-6-29
* Time: 22:42:14
* To change this template use File | Settings | File Templates.
*/
public class AJAXXMLServer extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1取参数
//2判断参数是否有问题
//3校验
//4将用户感兴趣的数据发回页面,而不是返回一个新的页面
//xml,响应的 Content-Type必须是text/xml
response.setContentType("text/xml;charset=utf-8");
PrintWriter out=response.getWriter();
String old=request.getParameter("name");
StringBuilder builder=new StringBuilder();
//将返回的数据拼装成XML格式
builder.append("<message>");
if(old==null||old.length()==0){
builder.append("用户名不能为空").append("</message>");
}else{
String name=new String(old.getBytes("iso8859-1"));
if(old.equals("racky")){
builder.append("用户名["+old+"]已经存在").append("</message>");
}else{
builder.append("用户名【"+old+"】不存在,可以使用").append("</message>");
}
}
out.println(builder.toString());
System.out.println(builder.toString());
}
}
第四步,配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>AJAXXMLServer</servlet-name>
<servlet-class>com.racky.servlet.AJAXXMLServer</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AJAXXMLServer</servlet-name>
<url-pattern>/AJAXXMLServer</url-pattern>
</servlet-mapping>
</web-app>
最后部署运行即可
分享到:
相关推荐
主要介绍了使用Ajax技术通过XMLHttpRequest对象完成首页登录功能,很不错的尝试,需要的朋友可以参考下
在ajax应用中,通常一个页面要同时发送多个请求,如果只有一个XMLHttpRequest 对象,前面的请求还未完成,后面的就会把前面的覆盖掉,如果每次都创建一个新的XMLHttpRequest对象,也会造成浪费。解决的办法就是创建...
其核心是XMLHttpRequest对象,可以在不向服务器端提交整个页面的情况下,实现局部更新网页,它是AJAX的Web应用程序架构的一项关键技术。 基本属性: 基本方法: XMLHttpRequest五步法: 第一:创建...
在ajax应用中,通常一个页面要同时发送多个请求,如果只有一个XMLHttpRequest对象,前面的请求还未完成,后面的就会把前面的覆盖掉,如果每次都创建一个新的XMLHttpRequest对象,也会造成浪费。解决的办法就是创建一...
AJAX 请求完成时执行函数。Ajax 事件。 XMLHttpRequest 对象和设置作为参数传递给回调函数。
XMLHttpRequest 是 AJAX 的关键 现在浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。 向后台请求数据readyState有五个状态0:服务器未初始化,1:服务器连接已建立,2请求已接受收,3请求...
使用AJAX技术,就可以使Javascript通过XMLHttpRequest对象直接与器进行交互。 PHP培训教程之AJAX技术全文共3页,当前为第1页。 通过HTTPRequest,一个web页面可以一个请求到web器并且接受web器返回的信息(不用重新...
本书重点介绍ajax及相关的工具和技术,主要内容包括xmlhttprequest对象及其属性和方法、发送请求和处理响应、构建完备的ajax开发工具、使用jsunit测试javascript、分析javascript调试工具和技术,以及ajax开发模式和...
Ajax的核心是JavaScript XmlHttpRequest对象。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术 使用: 首先登陆,输入你的昵称,进入聊天窗口。你可以打开两个浏览器,使用不同的昵称进入聊天...
之前一直都不曾注意到这一点,今天幸亏看了kuibono的文章,下面是kuibono给出的手动回收xmlHttpRequest对象的代码片断: 每次jquery的Ajax请求都会创建一个xmlHttprequest对象,理论上讲,长连接的请求是一个无限...
struts与ajax结合的例子 Ajax打破了使用页面重载的惯例技术组合,使用XMLHttpRequest对象进行异步数据读取,完成了浏览器和服务器之间的异步通信
2, 定义创建XMLHttpRequest对象的方法(建立一个XMLHttpRequest对象),也是就var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");//根据浏览器的不同有差异 3, 然后建立一个函数,用来指定载入的数据来源! 3.1,...
Ajax的核心是JavaScript XmlHttpRequest对象。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术 使用: 首先登陆,输入你的昵称,进入聊天窗口。你可以打开两个浏览器,使用不同的昵称进入聊天...
Ajax的核心是JavaScript XmlHttpRequest对象。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest对象可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。 ...
Ajax的核心是JavaScript XmlHttpRequest对象。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术 使用: 首先登陆,输入你的昵称,进入聊天窗口。你可以打开两个浏览器,使用不同的昵称进入聊天...
1、XmlHttpRequest对象的open方法允许程序员用一个ajax调用向服务器发送请求。 2、method表示请求类型。最常用的有get和post请求。如果不向服务器端发送数据,只是请求服务器端的数据,这个时候可以用get方法。...
第二章 XMLHttpRequest对象详解 第三章 jquery库详解 第四章 基于jquery的应用:电子相册系统 第五章 Ext JS 核心技术详解 第六章 Ext JS界面组件详解 第七章 Prototype库详解 第八章 基于Prototype库的应用:...